1. Introduction and Aims

We have merged the two datasets together in GCSKO_merge_wt.Rmd. We also subsetted out the pre-sexual-branch and the sexual cells (male and female) and stored them in a Seurat object called tenx.justwt.integrated.sex Here, we will perform pseudotime analysis on the dataset and build modules of genes that show similar expression across this pseudotime.

2. Read in the data

Load/Install the Required Packages

[1] "patchwork is loaded correctly"
[1] "viridis is loaded correctly"
[1] "Seurat is loaded correctly"
[1] "cowplot is loaded correctly"
[1] "gridExtra is loaded correctly"
[1] "grid is loaded correctly"
[1] "Hmisc is loaded correctly"
[1] "reshape2 is loaded correctly"
[1] "dplyr is loaded correctly"
Loading required package: circlize
========================================
circlize version 0.4.12
CRAN page: https://cran.r-project.org/package=circlize
Github page: https://github.com/jokergoo/circlize
Documentation: https://jokergoo.github.io/circlize_book/book/

If you use it in published research, please cite:
Gu, Z. circlize implements and enhances circular visualization
  in R. Bioinformatics 2014.

This message can be suppressed by:
  suppressPackageStartupMessages(library(circlize))
========================================
[1] "circlize is loaded correctly"
[1] "monocle3 is loaded correctly"
Loading required package: destiny

Attaching package: ‘destiny’

The following object is masked from ‘package:SummarizedExperiment’:

    distance

The following object is masked from ‘package:GenomicRanges’:

    distance

The following object is masked from ‘package:IRanges’:

    distance
[1] "destiny is loaded correctly"

load data

## load sex only branch cells saved from GCSKO_Sex_Branch_Analysis.Rmd
## Restore the objects
## load sex branch dataset
tenx.justwt.integrated.sex <- readRDS("../data_to_export/tenx.justwt.integrated.sex.RDS")
## load full dataset
#tenx.mutant.integrated <- readRDS("../data_to_export/tenx.mutant.integrated.RDS")
## add old pt values
## these values are calculated in hte GCSKO_pseudotime_allcells.Rmd script and so were added after the object was split into sex only.
#tenx.all <- readRDS("../data_to_export/tenx.mutant.integrated.RDS")
#tenx.all.meta <- as.data.frame(tenx.all@meta.data)
#tenx.all.meta <- tenx.all.meta[which(rownames(tenx.all.meta) %in% rownames(tenx.mutant.integrated.sex@meta.data)),]
#tenx.mutant.integrated.sex <- AddMetaData(tenx.mutant.integrated.sex, tenx.all.meta$old_pt_values, col.name = "old_pt_values")
## then remove these objects so they don't use up memory
#rm(tenx.all, tenx.all.meta)

Add a meta.data column so that 10X is listed as WT:

## get cells that are filtered out
mutant_cells <- which(tenx.justwt.integrated.sex$experiment == "mutants")

## make extra column in plotting df
tenx.justwt.integrated.sex@meta.data$identity_name_combined <- "WT_10X"
tenx.justwt.integrated.sex@meta.data$identity_name_combined[mutant_cells] <- tenx.justwt.integrated.sex@meta.data$identity_name_updated[mutant_cells]

## check
table(tenx.justwt.integrated.sex@meta.data$identity_name_combined)

wild-type    WT_10X 
      419      2398 
## create a list of our mutant gene IDs
list_of_mutant_genes <- c("PBANKA-0828000", "PBANKA-1302700", "PBANKA-1447900", "PBANKA-0102400", "PBANKA-0716500", "PBANKA-1435200", "PBANKA-1418100", "PBANKA-1144800", "PBANKA-0902300", "PBANKA-0413400", "PBANKA-1454800")

Read in gene annotations

gene_annotations <- read.table("../data/Reference/GenesByTaxon_Summary.csv", header = TRUE, sep = ",", stringsAsFactors = TRUE)
dim(gene_annotations)
[1] 5254    7
## convert _ to -
gene_annotations$Gene.ID <- gsub("_", "-", gene_annotations$Gene.ID)

3. Monocle on sex cells

calculate pseudotime and modules

Preparation

## extracts only 10x cells and also remove cluster 0 cells 
wt_cells <- rownames(tenx.justwt.integrated.sex@meta.data[which(tenx.justwt.integrated.sex@meta.data$identity_name_combined == "WT_10X" & !tenx.justwt.integrated.sex@meta.data$seurat_clusters == "3"),])

# & !tenx.justwt.integrated.sex@meta.data$seurat_clusters == "6"

## make a new Seurat of this
seurat.object <-subset(tenx.justwt.integrated.sex, cells = wt_cells)

## check that this is the same as the pb_sex_filtered object
#data_test <- as(as.matrix(GetAssayData(pb_sex_filtered, assay = "RNA", slot = "data")), 'sparseMatrix')
#is.equal
#is.identical

## extract counts and pheno:
## the reason we use the integrated and then subsetted is because these cells have been normalised whereas the cells in pb_sex_filtered have not been normalised (well they have but with doublets in them)
## with 10x only cells: all.equal(as.data.frame(counts(monocle.object)), as.data.frame(as.matrix(GetAssayData(seurat.object, assay = "RNA", slot = "counts")))) returns TRUE and also returns true when you change the slot input to "counts" and use monocle to norm it with method "log"
data <- as(as.matrix(GetAssayData(seurat.object, assay = "RNA", slot = "counts")), 'sparseMatrix')
## make phenodata
pd <- data.frame(seurat.object@meta.data)
## keep only the columns that are relevant in metadata
#pData <- pd %>% select(orig.ident, nCount_RNA, nFeature_RNA)
## make gene metadata
fData <- data.frame(gene_short_name = row.names(data), row.names = row.names(data))

## Construct monocle cds
monocle.object <- new_cell_data_set(expression_data = data, cell_metadata = pd, gene_metadata = fData)

## preprocess
monocle.object = preprocess_cds(monocle.object, num_dim = 50, norm_method = "log")
### if using integrated data:
# norm_method = "none", alignment_group = "~ experiment"

## plot jack straw plot
#plot_pc_variance_explained(monocle.object)

#monocle.object = reduce_dimension(monocle.object, reduction_method = "UMAP", preprocess_method = "PCA", umap.metric = "euclidean", umap.n_neighbors = 50, umap.min_dist = 0.5, verbose = FALSE)

#plot_cells(monocle.object, color_cells_by="experiment")

## graph learning

## add UMAP from Seurat
monocle.object@int_colData@listData$reducedDims@listData[["UMAP"]] <- seurat.object@reductions[["umap"]]@cell.embeddings
## if you want the old UMAP from the original all cells one, use: "DIM_UMAP"

## cluster
## this is essential to run the learn_graph function later on
monocle.object = cluster_cells(monocle.object)

## plot initial clustering by monocle
#plot_cells(monocle.object, color_cells_by="cluster", group_cells_by="partition", x = 2, y = 1)

## map pseudotime
monocle.object = learn_graph(monocle.object, learn_graph_control=list(ncenter=550, minimal_branch_len = 30), use_partition = FALSE)

  |                                                                                                                      
  |                                                                                                                |   0%
  |                                                                                                                      
  |================================================================================================================| 100%
# learn_graph_control=list(ncenter=500) - play with this parameter - lower tends to give fewer branches and higher tends to give more
# 500 - old analysis
# 250 - new analysis 

## Plot cells
plot_cells(monocle.object, color_cells_by="monocle_sex", group_cells_by="partition", x = 1, y = 2)
`select_()` was deprecated in dplyr 0.7.0.
Please use `select()` instead.The `add` argument of `group_by()` is deprecated as of dplyr 1.0.0.
Please use the `.add` argument instead.

Redefine the identities of the male and female cells

male

# monocle.object_male <- choose_graph_segments(monocle.object)

female

# monocle.object_female <- choose_graph_segments(monocle.object)

bipotential

#monocle.object_bipot <- choose_graph_segments(monocle.object)

asexual

#monocle.object_asex <- choose_graph_segments(monocle.object)

asexual fate

#monocle.object_asex_fate <- choose_graph_segments(monocle.object)

check

# df_freq <- data.frame(table(c(colnames(monocle.object_male), colnames(monocle.object_female), colnames(monocle.object_bipot), colnames(monocle.object_asex), colnames(monocle.object_asex_fate))))
# paste("number of cells in seurat object is", length(colnames(monocle.object)), ". The number of cells selected here with an identitity is", dim(df_freq)[1])
# df_freq <- df_freq[df_freq$Freq > 1, ]
# df_freq

Inspect where these missing cells are:

# '%ni%' <- Negate('%in%')
# 
# not_assigned_cells <- colnames(monocle.object)[colnames(monocle.object) %ni% c(colnames(monocle.object_male), colnames(monocle.object_female), colnames(monocle.object_bipot), colnames(monocle.object_asex), colnames(monocle.object_asex_fate))]
# 
# DimPlot(seurat.object, repel = TRUE, label.size = 5, pt.size = 0.5, cells.highlight = not_assigned_cells, dims = c(2,1), reduction = "DIM_UMAP") +
#   coord_fixed() + 
#   scale_color_manual(values=c("#000000", "#f54e1e"))
# ## create annotation dataframe from these results:
# df_monocle_sexes <- rbind(data.frame("cell_name" = colnames(monocle.object_male), "sex" = rep("Male", length(colnames(monocle.object_male)))),
#                           data.frame("cell_name" = colnames(monocle.object_female), "sex" = rep("Female", length(colnames(monocle.object_female)))),
#                           data.frame("cell_name" = colnames(monocle.object_bipot), "sex" = rep("Bipotential", length(colnames(monocle.object_bipot)))),
#                           data.frame("cell_name" = colnames(monocle.object_asex), "sex" = rep("Asexual", length(colnames(monocle.object_asex)))),
#                           data.frame("cell_name" = colnames(monocle.object_asex_fate), "sex" = rep("Asexual_Fate", length(colnames(monocle.object_asex_fate)))),
#                           data.frame("cell_name" = not_assigned_cells, "sex" = rep("Unassigned", length(not_assigned_cells)))
#                           )
# 
# dim(df_monocle_sexes)
# 
# ## order like the metadata
# df_monocle_sexes <- df_monocle_sexes[match(rownames(monocle.object@colData), df_monocle_sexes$cell_name), ]
# 
# ## add this back into the monocle object
# monocle.object@colData$Sexes_monocle <- df_monocle_sexes$sex

Pseudotime Calculation

## Order the cells and calculate pseudotime
monocle.object = order_cells(monocle.object)
Loading required package: shiny

Listening on http://127.0.0.1:6168
## Plot
umap_pt <- plot_cells(monocle.object, color_cells_by = "pseudotime", label_cell_groups=FALSE, cell_size = 1, x = 1, y = 2, label_branch_points=FALSE, label_leaves=FALSE, label_groups_by_cluster=FALSE, label_roots = FALSE) +
  coord_fixed() +
  theme_void() +
  labs(title = "Pseudotime") +
  theme(plot.title = element_text(hjust = 0.5, size=15), legend.position="bottom", legend.title=element_text (size=10), legend.text=element_text(size=10)) + 
  guides(colour = guide_colourbar(barwidth = 10, barheight = 0.5, title = "Pseudotime"))

## view
umap_pt

Check how well it correlates with the original pseudotime

when pseudotime was calculated on the whole object

library(ggpubr)

Attaching package: ‘ggpubr’

The following object is masked from ‘package:cowplot’:

    get_legend
## extract pseudotime values:
pt_values_new <- as.data.frame(pseudotime(monocle.object, reduction_method = "UMAP"))
pt_values_new$cell_name <- rownames(pt_values_new)
meta_data_df <- as.data.frame(monocle.object@colData)
meta_data_df$cell_name <- rownames(meta_data_df)
meta_data_df <- merge(meta_data_df, pt_values_new, by = "cell_name")
names(meta_data_df)[ncol(meta_data_df)]<- "pt"

ggplot(meta_data_df, aes(x = old_pt_values, y = pt, colour = monocle_sex)) + 
  geom_point() +  
  geom_smooth(method = "lm", se = FALSE) +
  theme_classic() + stat_cor(method = "pearson")

Module Construction

## find genes that change as a function of pt:
monocle.object_pr_test_res <- graph_test(monocle.object, neighbor_graph="principal_graph", cores=8, expression_family = "negbinomial")
Registered S3 method overwritten by 'spdep':
  method   from
  plot.mst ape 

  |                                                                                                        |   0%, ETA NA
  |                                                                                                     |   0%, ETA 07:03
  |                                                                                                     |   0%, ETA 03:36
  |                                                                                                     |   0%, ETA 02:52
  |                                                                                                     |   0%, ETA 02:28
  |                                                                                                     |   0%, ETA 02:19
  |                                                                                                     |   0%, ETA 02:02
  |                                                                                                     |   0%, ETA 01:51
  |                                                                                                     |   0%, ETA 01:42
  |                                                                                                     |   0%, ETA 01:37
  |                                                                                                     |   0%, ETA 01:36
  |                                                                                                     |   0%, ETA 01:32
  |                                                                                                     |   0%, ETA 01:32
  |                                                                                                     |   0%, ETA 01:30
  |                                                                                                     |   0%, ETA 01:27
  |                                                                                                     |   0%, ETA 01:37
  |                                                                                                     |   0%, ETA 01:38
  |                                                                                                     |   0%, ETA 01:39
  |                                                                                                     |   0%, ETA 01:37
  |                                                                                                     |   0%, ETA 01:40
  |                                                                                                     |   0%, ETA 01:38
  |                                                                                                     |   0%, ETA 01:34
  |                                                                                                     |   0%, ETA 01:32
  |                                                                                                     |   0%, ETA 01:28
  |                                                                                                     |   0%, ETA 01:26
  |=                                                                                                    |   1%, ETA 01:26
  |=                                                                                                    |   1%, ETA 01:25
  |=                                                                                                    |   1%, ETA 01:22
  |=                                                                                                    |   1%, ETA 01:21
  |=                                                                                                    |   1%, ETA 01:19
  |=                                                                                                    |   1%, ETA 01:17
  |=                                                                                                    |   1%, ETA 01:17
  |=                                                                                                    |   1%, ETA 01:18
  |=                                                                                                    |   1%, ETA 01:14
  |=                                                                                                    |   1%, ETA 01:12
  |=                                                                                                    |   1%, ETA 01:12
  |=                                                                                                    |   1%, ETA 01:09
  |=                                                                                                    |   1%, ETA 01:08
  |=                                                                                                    |   1%, ETA 01:07
  |=                                                                                                    |   1%, ETA 01:06
  |=                                                                                                    |   1%, ETA 01:06
  |=                                                                                                    |   1%, ETA 01:05
  |=                                                                                                    |   1%, ETA 01:04
  |=                                                                                                    |   1%, ETA 01:04
  |=                                                                                                    |   1%, ETA 01:03
  |=                                                                                                    |   1%, ETA 01:05
  |=                                                                                                    |   1%, ETA 01:05
  |=                                                                                                    |   1%, ETA 01:03
  |=                                                                                                    |   1%, ETA 01:03
  |=                                                                                                    |   1%, ETA 01:02
  |=                                                                                                    |   1%, ETA 01:01
  |=                                                                                                    |   1%, ETA 01:02
  |=                                                                                                    |   1%, ETA 01:01
  |=                                                                                                    |   1%, ETA 01:02
  |=                                                                                                    |   1%, ETA 01:00
  |=                                                                                                    |   1%, ETA 01:00
  |=                                                                                                    |   1%, ETA 01:00
  |=                                                                                                    |   1%, ETA 00:59
  |=                                                                                                    |   1%, ETA 00:59
  |=                                                                                                    |   1%, ETA 00:59
  |=                                                                                                    |   1%, ETA 00:58
  |=                                                                                                    |   1%, ETA 00:58
  |=                                                                                                    |   1%, ETA 00:58
  |=                                                                                                    |   1%, ETA 00:57
  |=                                                                                                    |   1%, ETA 00:57
  |=                                                                                                    |   1%, ETA 00:57
  |=                                                                                                    |   1%, ETA 00:57
  |=                                                                                                    |   1%, ETA 00:56
  |==                                                                                                   |   1%, ETA 00:56
  |==                                                                                                   |   2%, ETA 00:56
  |==                                                                                                   |   2%, ETA 00:55
  |==                                                                                                   |   2%, ETA 00:55
  |==                                                                                                   |   2%, ETA 00:56
  |==                                                                                                   |   2%, ETA 00:55
  |==                                                                                                   |   2%, ETA 00:55
  |==                                                                                                   |   2%, ETA 00:54
  |==                                                                                                   |   2%, ETA 00:54
  |==                                                                                                   |   2%, ETA 00:54
  |==                                                                                                   |   2%, ETA 00:53
  |==                                                                                                   |   2%, ETA 00:53
  |==                                                                                                   |   2%, ETA 00:53
  |==                                                                                                   |   2%, ETA 00:52
  |==                                                                                                   |   2%, ETA 00:52
  |==                                                                                                   |   2%, ETA 00:51
  |==                                                                                                   |   2%, ETA 00:52
  |==                                                                                                   |   2%, ETA 00:52
  |==                                                                                                   |   2%, ETA 00:52
  |==                                                                                                   |   2%, ETA 00:52
  |==                                                                                                   |   2%, ETA 00:52
  |==                                                                                                   |   2%, ETA 00:52
  |==                                                                                                   |   2%, ETA 00:52
  |==                                                                                                   |   2%, ETA 00:52
  |==                                                                                                   |   2%, ETA 00:52
  |==                                                                                                   |   2%, ETA 00:51
  |==                                                                                                   |   2%, ETA 00:51
  |==                                                                                                   |   2%, ETA 00:51
  |==                                                                                                   |   2%, ETA 00:51
  |==                                                                                                   |   2%, ETA 00:51
  |==                                                                                                   |   2%, ETA 00:51
  |==                                                                                                   |   2%, ETA 00:51
  |==                                                                                                   |   2%, ETA 00:51
  |==                                                                                                   |   2%, ETA 00:51
  |==                                                                                                   |   2%, ETA 00:50
  |==                                                                                                   |   2%, ETA 00:50
  |==                                                                                                   |   2%, ETA 00:50
  |==                                                                                                   |   2%, ETA 00:49
  |==                                                                                                   |   2%, ETA 00:49
  |==                                                                                                   |   2%, ETA 00:49
  |==                                                                                                   |   2%, ETA 00:49
  |==                                                                                                   |   2%, ETA 00:49
  |==                                                                                                   |   2%, ETA 00:49
  |===                                                                                                  |   2%, ETA 00:49
  |===                                                                                                  |   3%, ETA 00:49
  |===                                                                                                  |   3%, ETA 00:49
  |===                                                                                                  |   3%, ETA 00:49
  |===                                                                                                  |   3%, ETA 00:49
  |===                                                                                                  |   3%, ETA 00:49
  |===                                                                                                  |   3%, ETA 00:49
  |===                                                                                                  |   3%, ETA 00:49
  |===                                                                                                  |   3%, ETA 00:48
  |===                                                                                                  |   3%, ETA 00:48
  |===                                                                                                  |   3%, ETA 00:48
  |===                                                                                                  |   3%, ETA 00:48
  |===                                                                                                  |   3%, ETA 00:48
  |===                                                                                                  |   3%, ETA 00:47
  |===                                                                                                  |   3%, ETA 00:47
  |===                                                                                                  |   3%, ETA 00:47
  |===                                                                                                  |   3%, ETA 00:47
  |===                                                                                                  |   3%, ETA 00:47
  |===                                                                                                  |   3%, ETA 00:46
  |===                                                                                                  |   3%, ETA 00:46
  |===                                                                                                  |   3%, ETA 00:46
  |===                                                                                                  |   3%, ETA 00:46
  |===                                                                                                  |   3%, ETA 00:46
  |===                                                                                                  |   3%, ETA 00:46
  |===                                                                                                  |   3%, ETA 00:45
  |===                                                                                                  |   3%, ETA 00:45
  |===                                                                                                  |   3%, ETA 00:45
  |===                                                                                                  |   3%, ETA 00:45
  |===                                                                                                  |   3%, ETA 00:45
  |===                                                                                                  |   3%, ETA 00:44
  |===                                                                                                  |   3%, ETA 00:45
  |===                                                                                                  |   3%, ETA 00:45
  |===                                                                                                  |   3%, ETA 00:44
  |===                                                                                                  |   3%, ETA 00:44
  |===                                                                                                  |   3%, ETA 00:44
  |===                                                                                                  |   3%, ETA 00:44
  |===                                                                                                  |   3%, ETA 00:43
  |===                                                                                                  |   3%, ETA 00:43
  |===                                                                                                  |   3%, ETA 00:43
  |===                                                                                                  |   3%, ETA 00:43
  |===                                                                                                  |   3%, ETA 00:43
  |====                                                                                                 |   3%, ETA 00:43
  |====                                                                                                 |   3%, ETA 00:43
  |====                                                                                                 |   4%, ETA 00:43
  |====                                                                                                 |   4%, ETA 00:43
  |====                                                                                                 |   4%, ETA 00:43
  |====                                                                                                 |   4%, ETA 00:43
  |====                                                                                                 |   4%, ETA 00:43
  |====                                                                                                 |   4%, ETA 00:43
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:40
  |====                                                                                                 |   4%, ETA 00:40
  |====                                                                                                 |   4%, ETA 00:40
  |====                                                                                                 |   4%, ETA 00:40
  |====                                                                                                 |   4%, ETA 00:40
  |====                                                                                                 |   4%, ETA 00:40
  |====                                                                                                 |   4%, ETA 00:40
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:42
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |====                                                                                                 |   4%, ETA 00:41
  |=====                                                                                                |   4%, ETA 00:41
  |=====                                                                                                |   4%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:40
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:40
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |=====                                                                                                |   5%, ETA 00:41
  |======                                                                                               |   5%, ETA 00:40
  |======                                                                                               |   5%, ETA 00:40
  |======                                                                                               |   5%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |======                                                                                               |   6%, ETA 00:40
  |=======                                                                                              |   6%, ETA 00:40
  |=======                                                                                              |   6%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:40
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |=======                                                                                              |   7%, ETA 00:39
  |========                                                                                             |   7%, ETA 00:39
  |========                                                                                             |   7%, ETA 00:39
  |========                                                                                             |   7%, ETA 00:39
  |========                                                                                             |   7%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:39
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |========                                                                                             |   8%, ETA 00:38
  |=========                                                                                            |   8%, ETA 00:38
  |=========                                                                                            |   8%, ETA 00:38
  |=========                                                                                            |   8%, ETA 00:38
  |=========                                                                                            |   8%, ETA 00:38
  |=========                                                                                            |   9%, ETA 00:38
  |=========                                                                                            |   9%, ETA 00:38
  |=========                                                                                            |   9%, ETA 00:38
  |=========                                                                                            |   9%, ETA 00:38
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:38
  |=========                                                                                            |   9%, ETA 00:38
  |=========                                                                                            |   9%, ETA 00:38
  |=========                                                                                            |   9%, ETA 00:38
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |=========                                                                                            |   9%, ETA 00:39
  |==========                                                                                           |   9%, ETA 00:39
  |==========                                                                                           |   9%, ETA 00:39
  |==========                                                                                           |   9%, ETA 00:39
  |==========                                                                                           |   9%, ETA 00:39
  |==========                                                                                           |   9%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:39
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |==========                                                                                           |  10%, ETA 00:38
  |===========                                                                                          |  10%, ETA 00:38
  |===========                                                                                          |  10%, ETA 00:38
  |===========                                                                                          |  10%, ETA 00:38
  |===========                                                                                          |  10%, ETA 00:38
  |===========                                                                                          |  10%, ETA 00:38
  |===========                                                                                          |  11%, ETA 00:38
  |===========                                                                                          |  11%, ETA 00:38
  |===========                                                                                          |  11%, ETA 00:38
  |===========                                                                                          |  11%, ETA 00:38
  |===========                                                                                          |  11%, ETA 00:38
  |===========                                                                                          |  11%, ETA 00:38
  |===========                                                                                          |  11%, ETA 00:38
  |===========                                                                                          |  11%, ETA 00:38
  |===========                                                                                          |  11%, ETA 00:38
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |===========                                                                                          |  11%, ETA 00:37
  |============                                                                                         |  11%, ETA 00:37
  |============                                                                                         |  11%, ETA 00:37
  |============                                                                                         |  11%, ETA 00:37
  |============                                                                                         |  11%, ETA 00:37
  |============                                                                                         |  11%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:36
  |============                                                                                         |  12%, ETA 00:35
  |============                                                                                         |  12%, ETA 00:35
  |============                                                                                         |  12%, ETA 00:35
  |=============                                                                                        |  12%, ETA 00:35
  |=============                                                                                        |  12%, ETA 00:35
  |=============                                                                                        |  12%, ETA 00:35
  |=============                                                                                        |  12%, ETA 00:35
  |=============                                                                                        |  12%, ETA 00:35
  |=============                                                                                        |  12%, ETA 00:35
  |=============                                                                                        |  12%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:35
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |=============                                                                                        |  13%, ETA 00:34
  |==============                                                                                       |  13%, ETA 00:34
  |==============                                                                                       |  13%, ETA 00:34
  |==============                                                                                       |  13%, ETA 00:34
  |==============                                                                                       |  13%, ETA 00:34
  |==============                                                                                       |  13%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:34
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |==============                                                                                       |  14%, ETA 00:33
  |===============                                                                                      |  14%, ETA 00:33
  |===============                                                                                      |  14%, ETA 00:33
  |===============                                                                                      |  14%, ETA 00:33
  |===============                                                                                      |  14%, ETA 00:33
  |===============                                                                                      |  14%, ETA 00:33
  |===============                                                                                      |  14%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:33
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |===============                                                                                      |  15%, ETA 00:32
  |================                                                                                     |  15%, ETA 00:32
  |================                                                                                     |  15%, ETA 00:32
  |================                                                                                     |  15%, ETA 00:32
  |================                                                                                     |  15%, ETA 00:32
  |================                                                                                     |  15%, ETA 00:32
  |================                                                                                     |  15%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:31
  |================                                                                                     |  16%, ETA 00:31
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:31
  |================                                                                                     |  16%, ETA 00:31
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:32
  |================                                                                                     |  16%, ETA 00:31
  |================                                                                                     |  16%, ETA 00:31
  |================                                                                                     |  16%, ETA 00:31
  |================                                                                                     |  16%, ETA 00:31
  |================                                                                                     |  16%, ETA 00:31
  |================                                                                                     |  16%, ETA 00:31
  |=================                                                                                    |  16%, ETA 00:31
  |=================                                                                                    |  16%, ETA 00:31
  |=================                                                                                    |  16%, ETA 00:31
  |=================                                                                                    |  16%, ETA 00:31
  |=================                                                                                    |  16%, ETA 00:32
  |=================                                                                                    |  16%, ETA 00:32
  |=================                                                                                    |  16%, ETA 00:31
  |=================                                                                                    |  16%, ETA 00:31
  |=================                                                                                    |  16%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |=================                                                                                    |  17%, ETA 00:31
  |==================                                                                                   |  17%, ETA 00:31
  |==================                                                                                   |  17%, ETA 00:31
  |==================                                                                                   |  17%, ETA 00:31
  |==================                                                                                   |  17%, ETA 00:31
  |==================                                                                                   |  17%, ETA 00:31
  |==================                                                                                   |  17%, ETA 00:31
  |==================                                                                                   |  17%, ETA 00:31
  |==================                                                                                   |  18%, ETA 00:31
  |==================                                                                                   |  18%, ETA 00:31
  |==================                                                                                   |  18%, ETA 00:31
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |==================                                                                                   |  18%, ETA 00:30
  |===================                                                                                  |  18%, ETA 00:30
  |===================                                                                                  |  18%, ETA 00:30
  |===================                                                                                  |  18%, ETA 00:30
  |===================                                                                                  |  18%, ETA 00:30
  |===================                                                                                  |  18%, ETA 00:30
  |===================                                                                                  |  18%, ETA 00:30
  |===================                                                                                  |  18%, ETA 00:30
  |===================                                                                                  |  18%, ETA 00:30
  |===================                                                                                  |  18%, ETA 00:30
  |===================                                                                                  |  18%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:30
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |===================                                                                                  |  19%, ETA 00:29
  |====================                                                                                 |  19%, ETA 00:29
  |====================                                                                                 |  19%, ETA 00:29
  |====================                                                                                 |  19%, ETA 00:29
  |====================                                                                                 |  19%, ETA 00:29
  |====================                                                                                 |  19%, ETA 00:29
  |====================                                                                                 |  19%, ETA 00:29
  |====================                                                                                 |  19%, ETA 00:29
  |====================                                                                                 |  19%, ETA 00:29
  |====================                                                                                 |  19%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |====================                                                                                 |  20%, ETA 00:29
  |=====================                                                                                |  20%, ETA 00:29
  |=====================                                                                                |  20%, ETA 00:29
  |=====================                                                                                |  20%, ETA 00:28
  |=====================                                                                                |  20%, ETA 00:28
  |=====================                                                                                |  20%, ETA 00:28
  |=====================                                                                                |  20%, ETA 00:28
  |=====================                                                                                |  20%, ETA 00:28
  |=====================                                                                                |  20%, ETA 00:28
  |=====================                                                                                |  20%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |=====================                                                                                |  21%, ETA 00:28
  |======================                                                                               |  21%, ETA 00:28
  |======================                                                                               |  21%, ETA 00:28
  |======================                                                                               |  21%, ETA 00:28
  |======================                                                                               |  21%, ETA 00:28
  |======================                                                                               |  21%, ETA 00:28
  |======================                                                                               |  21%, ETA 00:28
  |======================                                                                               |  21%, ETA 00:28
  |======================                                                                               |  22%, ETA 00:28
  |======================                                                                               |  22%, ETA 00:28
  |======================                                                                               |  22%, ETA 00:28
  |======================                                                                               |  22%, ETA 00:28
  |======================                                                                               |  22%, ETA 00:28
  |======================                                                                               |  22%, ETA 00:28
  |======================                                                                               |  22%, ETA 00:28
  |======================                                                                               |  22%, ETA 00:28
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |======================                                                                               |  22%, ETA 00:27
  |=======================                                                                              |  22%, ETA 00:27
  |=======================                                                                              |  22%, ETA 00:27
  |=======================                                                                              |  22%, ETA 00:27
  |=======================                                                                              |  22%, ETA 00:27
  |=======================                                                                              |  22%, ETA 00:27
  |=======================                                                                              |  22%, ETA 00:27
  |=======================                                                                              |  22%, ETA 00:27
  |=======================                                                                              |  22%, ETA 00:27
  |=======================                                                                              |  22%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |=======================                                                                              |  23%, ETA 00:27
  |========================                                                                             |  23%, ETA 00:27
  |========================                                                                             |  23%, ETA 00:27
  |========================                                                                             |  23%, ETA 00:27
  |========================                                                                             |  23%, ETA 00:27
  |========================                                                                             |  23%, ETA 00:27
  |========================                                                                             |  23%, ETA 00:27
  |========================                                                                             |  23%, ETA 00:27
  |========================                                                                             |  23%, ETA 00:26
  |========================                                                                             |  23%, ETA 00:26
  |========================                                                                             |  23%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |========================                                                                             |  24%, ETA 00:26
  |=========================                                                                            |  24%, ETA 00:26
  |=========================                                                                            |  24%, ETA 00:26
  |=========================                                                                            |  24%, ETA 00:26
  |=========================                                                                            |  24%, ETA 00:26
  |=========================                                                                            |  24%, ETA 00:26
  |=========================                                                                            |  24%, ETA 00:26
  |=========================                                                                            |  24%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |=========================                                                                            |  25%, ETA 00:26
  |==========================                                                                           |  25%, ETA 00:26
  |==========================                                                                           |  25%, ETA 00:25
  |==========================                                                                           |  25%, ETA 00:25
  |==========================                                                                           |  25%, ETA 00:25
  |==========================                                                                           |  25%, ETA 00:25
  |==========================                                                                           |  25%, ETA 00:25
  |==========================                                                                           |  25%, ETA 00:25
  |==========================                                                                           |  25%, ETA 00:25
  |==========================                                                                           |  25%, ETA 00:25
  |==========================                                                                           |  25%, ETA 00:25
  |==========================                                                                           |  25%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |==========================                                                                           |  26%, ETA 00:25
  |===========================                                                                          |  26%, ETA 00:25
  |===========================                                                                          |  26%, ETA 00:25
  |===========================                                                                          |  26%, ETA 00:25
  |===========================                                                                          |  26%, ETA 00:25
  |===========================                                                                          |  26%, ETA 00:25
  |===========================                                                                          |  26%, ETA 00:25
  |===========================                                                                          |  26%, ETA 00:25
  |===========================                                                                          |  26%, ETA 00:25
  |===========================                                                                          |  26%, ETA 00:25
  |===========================                                                                          |  26%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |===========================                                                                          |  27%, ETA 00:25
  |============================                                                                         |  27%, ETA 00:25
  |============================                                                                         |  27%, ETA 00:25
  |============================                                                                         |  27%, ETA 00:25
  |============================                                                                         |  27%, ETA 00:24
  |============================                                                                         |  27%, ETA 00:24
  |============================                                                                         |  27%, ETA 00:24
  |============================                                                                         |  27%, ETA 00:24
  |============================                                                                         |  27%, ETA 00:24
  |============================                                                                         |  27%, ETA 00:24
  |============================                                                                         |  27%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |============================                                                                         |  28%, ETA 00:24
  |=============================                                                                        |  28%, ETA 00:24
  |=============================                                                                        |  28%, ETA 00:24
  |=============================                                                                        |  28%, ETA 00:24
  |=============================                                                                        |  28%, ETA 00:24
  |=============================                                                                        |  28%, ETA 00:24
  |=============================                                                                        |  28%, ETA 00:24
  |=============================                                                                        |  28%, ETA 00:24
  |=============================                                                                        |  28%, ETA 00:24
  |=============================                                                                        |  28%, ETA 00:24
  |=============================                                                                        |  28%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:24
  |=============================                                                                        |  29%, ETA 00:23
  |==============================                                                                       |  29%, ETA 00:23
  |==============================                                                                       |  29%, ETA 00:23
  |==============================                                                                       |  29%, ETA 00:23
  |==============================                                                                       |  29%, ETA 00:23
  |==============================                                                                       |  29%, ETA 00:23
  |==============================                                                                       |  29%, ETA 00:23
  |==============================                                                                       |  29%, ETA 00:23
  |==============================                                                                       |  29%, ETA 00:23
  |==============================                                                                       |  29%, ETA 00:23
  |==============================                                                                       |  29%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |==============================                                                                       |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  30%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |===============================                                                                      |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  31%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |================================                                                                     |  32%, ETA 00:23
  |=================================                                                                    |  32%, ETA 00:23
  |=================================                                                                    |  32%, ETA 00:23
  |=================================                                                                    |  32%, ETA 00:23
  |=================================                                                                    |  32%, ETA 00:23
  |=================================                                                                    |  32%, ETA 00:23
  |=================================                                                                    |  32%, ETA 00:23
  |=================================                                                                    |  32%, ETA 00:23
  |=================================                                                                    |  32%, ETA 00:22
  |=================================                                                                    |  32%, ETA 00:22
  |=================================                                                                    |  32%, ETA 00:22
  |=================================                                                                    |  32%, ETA 00:22
  |=================================                                                                    |  32%, ETA 00:22
  |=================================                                                                    |  32%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |=================================                                                                    |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  33%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |==================================                                                                   |  34%, ETA 00:22
  |===================================                                                                  |  34%, ETA 00:22
  |===================================                                                                  |  34%, ETA 00:22
  |===================================                                                                  |  34%, ETA 00:22
  |===================================                                                                  |  34%, ETA 00:22
  |===================================                                                                  |  34%, ETA 00:22
  |===================================                                                                  |  34%, ETA 00:22
  |===================================                                                                  |  34%, ETA 00:22
  |===================================                                                                  |  34%, ETA 00:22
  |===================================                                                                  |  34%, ETA 00:22
  |===================================                                                                  |  34%, ETA 00:22
  |===================================                                                                  |  34%, ETA 00:22
  |===================================                                                                  |  35%, ETA 00:22
  |===================================                                                                  |  35%, ETA 00:22
  |===================================                                                                  |  35%, ETA 00:22
  |===================================                                                                  |  35%, ETA 00:22
  |===================================                                                                  |  35%, ETA 00:22
  |===================================                                                                  |  35%, ETA 00:22
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |===================================                                                                  |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  35%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |====================================                                                                 |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  36%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:21
  |=====================================                                                                |  37%, ETA 00:20
  |=====================================                                                                |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  37%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |======================================                                                               |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  38%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |=======================================                                                              |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  39%, ETA 00:20
  |========================================                                                             |  40%, ETA 00:20
  |========================================                                                             |  40%, ETA 00:20
  |========================================                                                             |  40%, ETA 00:20
  |========================================                                                             |  40%, ETA 00:20
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |========================================                                                             |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  40%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |=========================================                                                            |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  41%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |==========================================                                                           |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:19
  |===========================================                                                          |  42%, ETA 00:18
  |===========================================                                                          |  42%, ETA 00:18
  |===========================================                                                          |  42%, ETA 00:18
  |===========================================                                                          |  42%, ETA 00:18
  |===========================================                                                          |  42%, ETA 00:18
  |===========================================                                                          |  42%, ETA 00:18
  |===========================================                                                          |  42%, ETA 00:18
  |===========================================                                                          |  42%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |===========================================                                                          |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  43%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |============================================                                                         |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  44%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |=============================================                                                        |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  45%, ETA 00:18
  |==============================================                                                       |  46%, ETA 00:18
  |==============================================                                                       |  46%, ETA 00:18
  |==============================================                                                       |  46%, ETA 00:18
  |==============================================                                                       |  46%, ETA 00:18
  |==============================================                                                       |  46%, ETA 00:18
  |==============================================                                                       |  46%, ETA 00:18
  |==============================================                                                       |  46%, ETA 00:18
  |==============================================                                                       |  46%, ETA 00:18
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |==============================================                                                       |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  46%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |===============================================                                                      |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  47%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |================================================                                                     |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:17
  |=================================================                                                    |  48%, ETA 00:16
  |=================================================                                                    |  48%, ETA 00:16
  |=================================================                                                    |  48%, ETA 00:16
  |=================================================                                                    |  48%, ETA 00:16
  |=================================================                                                    |  48%, ETA 00:16
  |=================================================                                                    |  48%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |=================================================                                                    |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  49%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |==================================================                                                   |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  50%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |===================================================                                                  |  51%, ETA 00:16
  |====================================================                                                 |  51%, ETA 00:16
  |====================================================                                                 |  51%, ETA 00:16
  |====================================================                                                 |  51%, ETA 00:16
  |====================================================                                                 |  51%, ETA 00:16
  |====================================================                                                 |  51%, ETA 00:16
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  51%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |====================================================                                                 |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  52%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |=====================================================                                                |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  53%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |======================================================                                               |  54%, ETA 00:15
  |=======================================================                                              |  54%, ETA 00:15
  |=======================================================                                              |  54%, ETA 00:15
  |=======================================================                                              |  54%, ETA 00:15
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  54%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |=======================================================                                              |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  55%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |========================================================                                             |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  56%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |=========================================================                                            |  57%, ETA 00:14
  |==========================================================                                           |  57%, ETA 00:14
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  57%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |==========================================================                                           |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  58%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |===========================================================                                          |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  59%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |============================================================                                         |  60%, ETA 00:13
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  60%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |=============================================================                                        |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  61%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |==============================================================                                       |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  62%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |===============================================================                                      |  63%, ETA 00:12
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  63%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |================================================================                                     |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  64%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |=================================================================                                    |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  65%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |==================================================================                                   |  66%, ETA 00:11
  |===================================================================                                  |  66%, ETA 00:11
  |===================================================================                                  |  66%, ETA 00:11
  |===================================================================                                  |  66%, ETA 00:11
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  66%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |===================================================================                                  |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  67%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |====================================================================                                 |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  68%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |=====================================================================                                |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:10
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  69%, ETA 00:09
  |======================================================================                               |  70%, ETA 00:09
  |======================================================================                               |  70%, ETA 00:09
  |======================================================================                               |  70%, ETA 00:09
  |======================================================================                               |  70%, ETA 00:09
  |======================================================================                               |  70%, ETA 00:09
  |======================================================================                               |  70%, ETA 00:09
  |======================================================================                               |  70%, ETA 00:09
  |======================================================================                               |  70%, ETA 00:09
  |======================================================================                               |  70%, ETA 00:09
  |======================================================================                               |  70%, ETA 00:09
  |======================================================================                               |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  70%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |=======================================================================                              |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  71%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |========================================================================                             |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:09
  |=========================================================================                            |  72%, ETA 00:08
  |=========================================================================                            |  72%, ETA 00:08
  |=========================================================================                            |  72%, ETA 00:08
  |=========================================================================                            |  72%, ETA 00:08
  |=========================================================================                            |  72%, ETA 00:08
  |=========================================================================                            |  72%, ETA 00:08
  |=========================================================================                            |  72%, ETA 00:08
  |=========================================================================                            |  72%, ETA 00:08
  |=========================================================================                            |  73%, ETA 00:08
  |=========================================================================                            |  73%, ETA 00:08
  |=========================================================================                            |  73%, ETA 00:08
  |=========================================================================                            |  73%, ETA 00:08
  |=========================================================================                            |  73%, ETA 00:08
  |=========================================================================                            |  73%, ETA 00:08
  |=========================================================================                            |  73%, ETA 00:08
  |=========================================================================                            |  73%, ETA 00:08
  |=========================================================================                            |  73%, ETA 00:08
  |=========================================================================                            |  73%, ETA 00:08
  |=========================================================================                            |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  73%, ETA 00:08
  |==========================================================================                           |  74%, ETA 00:08
  |==========================================================================                           |  74%, ETA 00:08
  |==========================================================================                           |  74%, ETA 00:08
  |==========================================================================                           |  74%, ETA 00:08
  |==========================================================================                           |  74%, ETA 00:08
  |==========================================================================                           |  74%, ETA 00:08
  |==========================================================================                           |  74%, ETA 00:08
  |==========================================================================                           |  74%, ETA 00:08
  |==========================================================================                           |  74%, ETA 00:08
  |==========================================================================                           |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  74%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |===========================================================================                          |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  75%, ETA 00:08
  |============================================================================                         |  76%, ETA 00:08
  |============================================================================                         |  76%, ETA 00:07
  |============================================================================                         |  76%, ETA 00:07
  |============================================================================                         |  76%, ETA 00:07
  |============================================================================                         |  76%, ETA 00:07
  |============================================================================                         |  76%, ETA 00:07
  |============================================================================                         |  76%, ETA 00:07
  |============================================================================                         |  76%, ETA 00:07
  |============================================================================                         |  76%, ETA 00:07
  |============================================================================                         |  76%, ETA 00:07
  |============================================================================                         |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  76%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |=============================================================================                        |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  77%, ETA 00:07
  |==============================================================================                       |  78%, ETA 00:07
  |==============================================================================                       |  78%, ETA 00:07
  |==============================================================================                       |  78%, ETA 00:07
  |==============================================================================                       |  78%, ETA 00:07
  |==============================================================================                       |  78%, ETA 00:07
  |==============================================================================                       |  78%, ETA 00:07
  |==============================================================================                       |  78%, ETA 00:07
  |==============================================================================                       |  78%, ETA 00:07
  |==============================================================================                       |  78%, ETA 00:07
  |==============================================================================                       |  78%, ETA 00:07
  |==============================================================================                       |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  78%, ETA 00:07
  |===============================================================================                      |  79%, ETA 00:07
  |===============================================================================                      |  79%, ETA 00:07
  |===============================================================================                      |  79%, ETA 00:07
  |===============================================================================                      |  79%, ETA 00:07
  |===============================================================================                      |  79%, ETA 00:07
  |===============================================================================                      |  79%, ETA 00:07
  |===============================================================================                      |  79%, ETA 00:07
  |===============================================================================                      |  79%, ETA 00:07
  |===============================================================================                      |  79%, ETA 00:07
  |===============================================================================                      |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:07
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  79%, ETA 00:06
  |================================================================================                     |  80%, ETA 00:06
  |================================================================================                     |  80%, ETA 00:06
  |================================================================================                     |  80%, ETA 00:06
  |================================================================================                     |  80%, ETA 00:06
  |================================================================================                     |  80%, ETA 00:06
  |================================================================================                     |  80%, ETA 00:06
  |================================================================================                     |  80%, ETA 00:06
  |================================================================================                     |  80%, ETA 00:06
  |================================================================================                     |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  80%, ETA 00:06
  |=================================================================================                    |  81%, ETA 00:06
  |=================================================================================                    |  81%, ETA 00:06
  |=================================================================================                    |  81%, ETA 00:06
  |=================================================================================                    |  81%, ETA 00:06
  |=================================================================================                    |  81%, ETA 00:06
  |=================================================================================                    |  81%, ETA 00:06
  |=================================================================================                    |  81%, ETA 00:06
  |=================================================================================                    |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  81%, ETA 00:06
  |==================================================================================                   |  82%, ETA 00:06
  |==================================================================================                   |  82%, ETA 00:06
  |==================================================================================                   |  82%, ETA 00:06
  |==================================================================================                   |  82%, ETA 00:06
  |==================================================================================                   |  82%, ETA 00:06
  |==================================================================================                   |  82%, ETA 00:06
  |==================================================================================                   |  82%, ETA 00:06
  |==================================================================================                   |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:06
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  82%, ETA 00:05
  |===================================================================================                  |  83%, ETA 00:05
  |===================================================================================                  |  83%, ETA 00:05
  |===================================================================================                  |  83%, ETA 00:05
  |===================================================================================                  |  83%, ETA 00:05
  |===================================================================================                  |  83%, ETA 00:05
  |===================================================================================                  |  83%, ETA 00:05
  |===================================================================================                  |  83%, ETA 00:05
  |===================================================================================                  |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:05
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  83%, ETA 00:06
  |====================================================================================                 |  84%, ETA 00:06
  |====================================================================================                 |  84%, ETA 00:06
  |====================================================================================                 |  84%, ETA 00:06
  |====================================================================================                 |  84%, ETA 00:06
  |====================================================================================                 |  84%, ETA 00:06
  |====================================================================================                 |  84%, ETA 00:06
  |====================================================================================                 |  84%, ETA 00:06
  |====================================================================================                 |  84%, ETA 00:06
  |=====================================================================================                |  84%, ETA 00:06
  |=====================================================================================                |  84%, ETA 00:06
  |=====================================================================================                |  84%, ETA 00:06
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  84%, ETA 00:05
  |=====================================================================================                |  85%, ETA 00:05
  |=====================================================================================                |  85%, ETA 00:05
  |=====================================================================================                |  85%, ETA 00:05
  |=====================================================================================                |  85%, ETA 00:05
  |=====================================================================================                |  85%, ETA 00:05
  |=====================================================================================                |  85%, ETA 00:05
  |=====================================================================================                |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  85%, ETA 00:05
  |======================================================================================               |  86%, ETA 00:05
  |======================================================================================               |  86%, ETA 00:05
  |======================================================================================               |  86%, ETA 00:05
  |======================================================================================               |  86%, ETA 00:05
  |======================================================================================               |  86%, ETA 00:05
  |======================================================================================               |  86%, ETA 00:05
  |======================================================================================               |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  86%, ETA 00:05
  |=======================================================================================              |  87%, ETA 00:05
  |=======================================================================================              |  87%, ETA 00:05
  |=======================================================================================              |  87%, ETA 00:05
  |=======================================================================================              |  87%, ETA 00:05
  |=======================================================================================              |  87%, ETA 00:05
  |=======================================================================================              |  87%, ETA 00:05
  |========================================================================================             |  87%, ETA 00:05
  |========================================================================================             |  87%, ETA 00:05
  |========================================================================================             |  87%, ETA 00:05
  |========================================================================================             |  87%, ETA 00:05
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  87%, ETA 00:04
  |========================================================================================             |  88%, ETA 00:04
  |========================================================================================             |  88%, ETA 00:04
  |========================================================================================             |  88%, ETA 00:04
  |========================================================================================             |  88%, ETA 00:04
  |========================================================================================             |  88%, ETA 00:04
  |========================================================================================             |  88%, ETA 00:04
  |========================================================================================             |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  88%, ETA 00:04
  |=========================================================================================            |  89%, ETA 00:04
  |=========================================================================================            |  89%, ETA 00:04
  |=========================================================================================            |  89%, ETA 00:04
  |=========================================================================================            |  89%, ETA 00:04
  |=========================================================================================            |  89%, ETA 00:04
  |=========================================================================================            |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  89%, ETA 00:04
  |==========================================================================================           |  90%, ETA 00:04
  |==========================================================================================           |  90%, ETA 00:04
  |==========================================================================================           |  90%, ETA 00:04
  |==========================================================================================           |  90%, ETA 00:04
  |==========================================================================================           |  90%, ETA 00:04
  |==========================================================================================           |  90%, ETA 00:04
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  90%, ETA 00:03
  |===========================================================================================          |  91%, ETA 00:03
  |===========================================================================================          |  91%, ETA 00:03
  |===========================================================================================          |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  91%, ETA 00:03
  |============================================================================================         |  92%, ETA 00:03
  |============================================================================================         |  92%, ETA 00:03
  |============================================================================================         |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  92%, ETA 00:03
  |=============================================================================================        |  93%, ETA 00:03
  |=============================================================================================        |  93%, ETA 00:03
  |=============================================================================================        |  93%, ETA 00:03
  |=============================================================================================        |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  93%, ETA 00:02
  |==============================================================================================       |  94%, ETA 00:02
  |==============================================================================================       |  94%, ETA 00:02
  |==============================================================================================       |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  94%, ETA 00:02
  |===============================================================================================      |  95%, ETA 00:02
  |===============================================================================================      |  95%, ETA 00:02
  |===============================================================================================      |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  95%, ETA 00:02
  |================================================================================================     |  96%, ETA 00:02
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  96%, ETA 00:01
  |=================================================================================================    |  97%, ETA 00:01
  |=================================================================================================    |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  97%, ETA 00:01
  |==================================================================================================   |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  98%, ETA 00:01
  |===================================================================================================  |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |==================================================================================================== |  99%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=====================================================================================================| 100%, ETA 00:00
  |=================================================================================================| 100%, Elapsed 00:34
# explains expression family - https://cole-trapnell-lab.github.io/monocle3/docs/differential/ - results were same for either defauly or negbinomial

## find significant genes
## I used 0.05 previously in all cells 
## 2884 w. p = 0.01, 3260 w. p = 0.05
pr_deg_ids <- row.names(subset(monocle.object_pr_test_res, q_value < 0.05))

## collect into modules
gene_module_df_sex <- find_gene_modules(monocle.object[pr_deg_ids,], resolution=c(10^seq(-6,2)), random_seed = 1234)

## how many genes in modules?
dim(gene_module_df_sex)
[1] 3528    5
[1] "there are 23 modules"

Plot Modules

General Module Composition

Make a dataframe to plot by aggregating clusters vs. modules

## make cell group df
cell_group_df <- tibble::tibble(cell=row.names(colData(monocle.object)), cell_group=colData(monocle.object)$seurat_clusters)

## make plotting df
#agg_mat <- aggregate_gene_expression(monocle.object, gene_module_df_sex, cell_group_df)

Find out how many genes there are per total so we can add this to the plot

## how many genes per module?
genes_per_module <- as.data.frame(table(gene_module_df_sex$module))
genes_per_module

Find out which modules our mutant genes reside in

## create a list of our mutant gene IDs
list_of_mutant_genes <- c("PBANKA-0828000", "PBANKA-1302700", "PBANKA-1447900", "PBANKA-0102400", "PBANKA-0716500", "PBANKA-1435200", "PBANKA-1418100", "PBANKA-0902300", "PBANKA-0413400", "PBANKA-1454800")

## make a dataframe to convert the gene IDs into actual IDs
ss2_mutants_final <- readRDS("../data_to_export/ss2_mutants_final.RDS")
df_mutant_ids <- as.data.frame(unique(cbind(ss2_mutants_final@meta.data$identity_gene_updated, ss2_mutants_final@meta.data$identity_updated, ss2_mutants_final@meta.data$identity_name_updated)))[-c(2),]
rm(ss2_mutants_final)
# remove the "820" bit on 10
df_mutant_ids$V1 <- gsub("_820", "", df_mutant_ids$V1)
# change the underscore (_) to a dash (-) in gene IDs
df_mutant_ids$V1 <- gsub("_", "-", df_mutant_ids$V1)
names(df_mutant_ids) <- c("gene_ID", "mutant_identity", "mutant_identity_2")

## subset modules df to include only mutant gene IDs
df_mutant_gene_modules <- as.data.frame(gene_module_df_sex[which(gene_module_df_sex$id %in% list_of_mutant_genes),])
names(df_mutant_gene_modules)[1] <- "gene_ID"

## merge dataframes
df_mutant_gene_modules <- merge(df_mutant_gene_modules, df_mutant_ids, by = "gene_ID")

## Inspect
df_mutant_gene_modules[order(df_mutant_gene_modules$module), ]

so modules of interest are:

table(df_mutant_gene_modules$module)

 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 
 0  0  3  0  0  0  0  2  0  0  0  0  4  0  0  0  0  0  0  0  1  0  0 

Which modules do other genes of interest lie in?:

## landmark genes (genes of interest)
# AP2G - PBANKA-1437500
# AP2 - PBANKA-0909600 - from poran paper
# AP2G-2 - PBANKA-1034300 
# ccp2 - "PBANKA-1319500" - female 820
# p25 - "PBANKA-0515000" - female
# p28 - "PBANKA-0514900" - female
# ccp3 - "PBANKA-1035200" - female -  https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5909122/
# nek4 - "PBANKA-0616700" - female
# ap2-fg - "PBANKA-1415700" - female 
# dozi - "PBANKA-1217700" - female
# MG1 - "PBANKA-0416100" - male 820
# hap2 - "PBANKA-1212600" - male
# MAPK2 - "PBANKA-0933700" - male
# nek1 - "PBANKA-1443000" - male
# cdpk4 - "PBANKA-0615200" - male

## create a list of landmark genes
list_of_landmark_genes <- c("PBANKA-1437500",
                            "PBANKA-0909600",
                            "PBANKA-1034300", 
                            "PBANKA-1319500", 
                            "PBANKA-0515000",
                            "PBANKA-0514900",
                            "PBANKA-1035200",
                            "PBANKA-0616700",
                            "PBANKA-1415700",
                            "PBANKA-1217700",
                            "PBANKA-0416100", 
                            "PBANKA-1212600",
                            "PBANKA-0933700",
                            "PBANKA-1443000",
                            "PBANKA-0615200")

name_of_landmark_genes <- c("AP2-G", 
                            "AP2_poran", 
                            "AP2-G2", 
                            "ccp2", 
                            "p25", 
                            "p28",
                            "ccp3",
                            "nek4",
                            "ap2-fg",
                            "DOZI",
                            "mg1", 
                            "hap2", 
                            "mapk2",
                            "nek1",
                            "cdpk4")

## make a df
name_of_landmark_genes <- data.frame("gene_name" = name_of_landmark_genes, "id" = list_of_landmark_genes)

## make dataframe
df_landmark_gene_modules <- gene_module_df_sex[which(gene_module_df_sex$id %in% list_of_landmark_genes),]

## merge dataframes
df_landmark_gene_modules <- merge(df_landmark_gene_modules, name_of_landmark_genes, by = "id")

## inspect
df_landmark_gene_modules[order(df_landmark_gene_modules$module), ]

enrichment of screen hits in modules

## read in screen hits
library("readxl")
screen_hits <- read_excel("../data/Screen/Modules_Clusters_Phenotypes.xlsx")

## get only hits
screen_hits_selected <- screen_hits[which(screen_hits$`Gam phenotype screen` == "Both" | screen_hits$`Gam phenotype screen` == "Females" | screen_hits$`Gam phenotype screen` == "Males"), ] 

## extract gene IDs
gene_hits <- screen_hits_selected$`new gene ID`
## change the underscore to a dash
gene_hits <- gsub("_", "-", gene_hits)

## find out which modules they are in
df_hits_gene_modules <- gene_module_df_sex[which(gene_module_df_sex$id %in% gene_hits),]
print("screen hits by module")
[1] "screen hits by module"
table(df_hits_gene_modules$module)

 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 
 1  1  4  1  0  0  3  3  2  1  0  0  6  1  0  0  0  1  1  0  2  0  0 
## get the number genes screened in that module
screen_hits_screened <- screen_hits[which(screen_hits$`Gam phenotype screen` == "Both" | screen_hits$`Gam phenotype screen` == "Females" | screen_hits$`Gam phenotype screen` == "Males" | screen_hits$`Gam phenotype screen` == "None" | screen_hits$`Gam phenotype screen` == "male not enough power"), ] 
## extract gene IDs
genes_screened <- screen_hits_screened$`new gene ID`
## change the underscore to a dash
genes_screened <- gsub("_", "-", genes_screened)
## find out which modules they are in
df_screened_gene_modules <- gene_module_df_sex[which(gene_module_df_sex$id %in% genes_screened),]
print("total genes screened in this module")
[1] "total genes screened in this module"
table(df_screened_gene_modules$module)

  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23 
111  45  57  31  73  34  32  47  23  24  41  16  43  25  49  20  11  32  20  22  17  19   9 
## make a table with this info
pc_screened <- data.frame(hits = table(df_hits_gene_modules$module), screened =  table(df_screened_gene_modules$module))[,-3]
names(pc_screened) <- c("module", "hits", "screened")
pc_screened$pc <- (pc_screened$hits /pc_screened$screened)*100

## view
pc_screened

Further investigation of screen hits

## rename df
df_screen_hits_selected <- as.data.frame(screen_hits_selected)
df_screen_hits_selected$'new gene ID' <- gsub("_", "-", df_screen_hits_selected$'new gene ID')
names(df_screen_hits_selected)[2] <- "id"
df_gene_module_df_sex <- as.data.frame(gene_module_df_sex)

## merge dfs together
screen_hits_modules <- merge(df_screen_hits_selected, df_gene_module_df_sex, by = "id")

## view
screen_hits_modules
## change the row order to match the heatmap later
pc_screened$module <- factor(pc_screened$module, levels = rev(c("10", "9", "17", "4", "2", "6", "12", "14",
               "21", "7", 
               "22", "23","13","16", "18", "19", "11", "15", "5",
               "20", "8", "3", "1"
               )))

 h1 <- ggplot(data = pc_screened, mapping = aes(x = module, fill=pc)) +
  geom_bar(col = "#FFFFFF", width = 1)+
      theme_void() +
    theme(panel.spacing.x = unit(1, "mm")) +
    scale_fill_continuous_sequential(palette = "Greens") +
  coord_flip()
 legend <- get_legend(h1)
 h1 <- h1 + theme(legend.position = "none")

 
screen_annotation <- plot_grid(h1, legend, nrow = 1, rel_widths = c(10, 1.5))
screen_annotation

ggsave("../images_to_export/screen_annotation.png", plot = screen_annotation, device = "png", path = NULL, scale = 1, width = 10, height = 10, units = "cm", dpi = 300, limitsize = TRUE)

significance test

test vikash vs my dataframe

## kasia's table for comparison
vikash <- read.delim("../bulk_rna-seq/enrichment/Kasia new cluster enrichment for Vikash.txt", sep = "\t", header = TRUE)
dim(vikash)
[1] 1006    3
## read in screen hits
library("readxl")
screen_hits <- read_excel("../data/Screen/Modules_Clusters_Phenotypes.xlsx")
dim(screen_hits)
[1] 4785   11
combined <- merge(screen_hits[which(screen_hits$`Gam phenotype screen` == "Both" | screen_hits$`Gam phenotype screen` == "Females" | screen_hits$`Gam phenotype screen` == "Males"), ], vikash[!vikash$cons.phenotype == "None", ], by.x = "new gene ID", by.y = "new.gene.ID", all.x = TRUE)
dim(combined)
[1] 41 13

set up df for python

## read in modules
modules <- as.data.frame(gene_module_df_sex)
## take cols of interest
modules <- modules[ ,c("id", "module"), drop = FALSE]
## change the underscore to a dash
modules$id <- gsub("-", "_", modules$id)

## read in phenotypes from screen
screen_hits <- read_excel("../data/Screen/Modules_Clusters_Phenotypes.xlsx")
screen_hits_to_merge <- as.data.frame(screen_hits)
screen_hits_to_merge <- screen_hits_to_merge[ ,c("new gene ID", "Gam phenotype screen")]

## merge togerther to create final df
input_for_enrichment <- merge(modules, screen_hits_to_merge, by.x = "id", by.y = "new gene ID", all.x = TRUE)
names(input_for_enrichment) <- c("new gene ID", "Cluster", "cons phenotype")
## modify to match vikash table
## remove NA values
input_for_enrichment <- input_for_enrichment[!is.na(input_for_enrichment$`cons phenotype`), ]
## change the malenot enough power to none 
input_for_enrichment[input_for_enrichment$`cons phenotype` == "male not enough power", ]$`cons phenotype` <- "None"
##clean up
rm(screen_hits_to_merge)

do significance test in python - update this to R at a later date - Vikash wrote this for enrichment of screen hits in bulk data

import os
import pandas as pd
from scipy.stats import hypergeom ## for hypergeomtric distributions
import numpy as np
import statsmodels.stats.multitest as mtest ## for multiple hypothesis testing
current_folder = os.getcwd() ## current directory path

def apply_enrich(tmp,sex_gene_list,outfile):
    ## groupby along Phenotyepes
    #First argumnet: temperory dataframe
    #Second argument: list of male-specific genes
    #Third argumnet: file where we store enrichment analysis

    M=len(tmp.index) # total number of genes
    pvals=[] # list for storing pvalues
    n_list=[] # store number of genes in cluster
    x_list=[] ## store number of sex-specific genes in cluster
    genes=[] ## we store genes (sex-specifc gene ids)
    clusters=[] ## store cluster number

    ## group clusters
    for k,v in tmp.groupby([ 'Cluster']).indices.items():
        ## print(k, len(v))
        clusters.append(k) ## store cluster number
        clust_genes=set(tmp.index[v].to_list()) ## genes in the cluster

        sex_gene_in_clust= set(sex_gene_list)& clust_genes ## how many sex-specific genes are found in cluster
        ## how many are in phenoype
        M=M ## total genes
        N=len(sex_gene_list) ## sex-specific genes
        n=len(clust_genes) ## total number of cluster genes

        rv = hypergeom(M, n, N) ## hypergeometric  distributions
        x=len(sex_gene_in_clust) ## number of sex-specific genes in cluster

        ## for p-value we need to get summation of all probalities greater than > x
        pval= 1-rv.cdf(x)
        pvals.append(pval)
        n_list.append(n)
        x_list.append(x)
        genes.append(', '.join(sex_gene_in_clust))
    fdr=mtest.multipletests(pvals, alpha=0.05, method='fdr_bh')
    enrich={'Cluster':clusters, 'pvals':pvals,'cluster_size':n_list,'# of genes found in cluster':x_list,'genes':genes,'FDR':fdr[1]}

    ## create enrichment table
    enrich_df=pd.DataFrame.from_dict(enrich)
    enrich_soreted=enrich_df.sort_values(by=['pvals'],ascending=True)

    enrich_soreted.to_csv(outfile,sep='\t',index=None)
    



def enrich_cluster_final():
    ''' Calculate p-value and FDR using enrichment analysis. We used hypergeometric test'''

    ### input file (provided by Oliver): this file has 3 columns
    # First column: 'new gene ID'
    # Second column: 'Cluster'
    # Third column: 'cons phenotype'
    ##
    #input_file=current_folder+'/Kasia new cluster enrichment for Vikash.txt'
    #df=pd.read_csv(input_file,sep='\t')## input file as a dataframe
    df = r.input_for_enrichment
    df
    #df=df.fillna('NA') ## nan is fill with NA
    # df['consensus phenotype']=df['consensus phenotype'].str.replace('None','NA')
    tmp=df.copy() ## this is the temperory data frame same as a original dataframe
    tmp.set_index('new gene ID',inplace=True) ## make gene ids as index

    ## seprate the dataframes according sex-specific phenotypes
    male_df=tmp[(tmp['cons phenotype']== 'Males')]
    female_df=tmp[(tmp['cons phenotype']== 'Females')]
    both_df=tmp[(tmp['cons phenotype']== 'Both')]

    ## enrichment analysis for male
    outfile=current_folder+'/../data_to_export/module_enrichment_results/Module_enrichment_gametocyte_male.txt'
    #First argumnet: temperory dataframe
    #Second argument: list of male-specific genes
    #Third argumnet: file where we store enrichment analysis
    apply_enrich(tmp,male_df.index.to_list(),outfile)

    ## enrichment analysis for female: similar as male

    outfile=current_folder+'/../data_to_export/module_enrichment_results/Module_enrichment_gametocyte_female.txt'
    apply_enrich(tmp ,female_df.index.to_list(),outfile)

    ## enrichment analysis for both sexes: : similar as male

    outfile=current_folder+'/../data_to_export/module_enrichment_results/Module_enrichment_gametocyte_both.txt'
    apply_enrich(tmp,both_df.index.to_list(),outfile)
if __name__ == '__main__':

   enrich_cluster_final()

DOZI-regulated genes

Find out how many of the genes in each module has a DOZI-regulated gene

OLD LIST FROM KENT PAPER

DOZI_regulated_genes <-
read.csv(file = "../data/Reference/DOZI_regulated_genes.csv", header = TRUE)

## extract gene IDs
dozi_genes <- DOZI_regulated_genes[DOZI_regulated_genes$DOZI_regulated. == "YES", ]$Gene_ID_PB
## change the underscore to a dash
dozi_genes <- gsub("_", "-", dozi_genes)

## find out which modules they are in
df_dozi_gene_modules <- gene_module_df_sex[which(gene_module_df_sex$id %in% dozi_genes),]
print("dozi genes by module")
[1] "dozi genes by module"
table(df_dozi_gene_modules$module)

 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 
 1 13  5  8 83  5  5  4  3  7 10 11  9  6 35  7  3 14  9  4  3  5  3 
## DOZI
guerreiro <- read.csv(file = "../data/Reference/raw_data_and_merging_scripts/Guerreiro_2014.csv", header = TRUE)
guerreiro <- guerreiro[, c(1, 9,10,11)]
names(guerreiro) <- c("id", "CITH", "DOZI", "CITH_and_DOZI")
## change old gene IDs
old_ids <- read.csv(file = "../data/Reference/raw_data_and_merging_scripts/New_to_old_gene_ids.csv", header = FALSE)
## Get only 1 to 1 conversions
old_ids <- old_ids[old_ids$V3 == "",]
old_ids <- old_ids[ , c(1,2)]
names(old_ids) <- c("new", "old")
guerreiro_new <- merge(guerreiro, old_ids, by.x = "id", by.y = "old", all.x = TRUE)
guerreiro_new <- guerreiro_new[-which(is.na(guerreiro_new$new)), ]
## change the underscore to a dash
guerreiro_new$new <- gsub("_", "-", guerreiro_new$new)
## if you want only discovered in both
#guerreiro_hits <- guerreiro_new[guerreiro_new$CITH_and_DOZI == 2, ]
## to get all genes with a pullldown
guerreiro_hits <- guerreiro_new[!guerreiro_new$CITH_and_DOZI == 0, ]

dozi_genes <- guerreiro_hits$new
## find out which modules they are in
df_dozi_gene_modules <- gene_module_df_sex[which(gene_module_df_sex$id %in% dozi_genes),]
print("dozi genes by module")
[1] "dozi genes by module"
table(df_dozi_gene_modules$module)

  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21 
 26  32  21  23 129  19  20  13  20  21  21  20  20  25  48  14   8  28  23  11   8 
 22  23 
 10  10 

get as a percentage

## make a table with the total number of genes in each module
test <- as.data.frame(table(gene_module_df_sex$module), stringsAsFactors=FALSE)
## reorder rows by module number
test <- test[order(as.numeric(test$Var1)),]
## combine the total number of dozi genes per module with the total number of genes per module
pc_screened <- data.frame(dozi = table(df_dozi_gene_modules$module), total =  test)[,-3]
names(pc_screened) <- c("module", "dozi_genes_per_module", "total_genes_per_module")
## calculate percentage
pc_screened$pc <- (pc_screened$dozi_genes_per_module /pc_screened$total_genes_per_module)*100

## view
pc_screened
## change row order:
row.order <- c("10", "9", "17", "4", "2", "6", "12", "14",
               "21", "7", 
               "22", "23","13","16", "18", "19", "11", "15", "5",
               "20", "8", "3", "1"
               )
## change the module to a string
#pc_screened$module <- as.numeric(as.character(pc_screened$module))
#pc_screened$module <- as.factor(pc_screened$module)
#pc_screened <- pc_screened[match(row.order, pc_screened$module), ]
pc_screened$module <- factor(pc_screened$module, levels = rev(c("10", "9", "17", "4", "2", "6", "12", "14",
               "21", "7", 
               "22", "23","13","16", "18", "19", "11", "15", "5",
               "20", "8", "3", "1"
               )))

 h1 <- ggplot(data = pc_screened, mapping = aes(x = module, fill=pc)) +
  geom_bar(col = "#FFFFFF", width = 1)+
      theme_void() +
    theme(panel.spacing.x = unit(1, "mm")) +
    scale_fill_continuous_sequential(palette = "Blues") +
  coord_flip()
 legend <- get_legend(h1)
 h1 <- h1 + theme(legend.position = "none")

 
dozi_annotation <- plot_grid(h1, legend, nrow = 1, rel_widths = c(10, 1.5))
dozi_annotation

ggsave("../images_to_export/dozi_annotation.png", plot = dozi_annotation, device = "png", path = NULL, scale = 1, width = 10, height = 10, units = "cm", dpi = 300, limitsize = TRUE)

set up df for python

## read in modules
modules <- as.data.frame(gene_module_df_sex)
## take cols of interest
modules <- modules[ ,c("id", "module"), drop = FALSE]
## change the underscore to a dash
modules$id <- gsub("-", "_", modules$id)

## read in phenotypes from screen
screen_hits_to_merge <- as.data.frame(guerreiro_hits)
## create new col
screen_hits_to_merge$phenotype <- NA
screen_hits_to_merge[screen_hits_to_merge$CITH == 1, ]$phenotype <- "CITH"
screen_hits_to_merge[screen_hits_to_merge$DOZI== 1, ]$phenotype <- "DOZI"
screen_hits_to_merge[screen_hits_to_merge$CITH_and_DOZI == 2, ]$phenotype <- "CITH_and_DOZI"
screen_hits_to_merge <- screen_hits_to_merge[ ,c("new", "phenotype")]
## change the underscore to a dash
screen_hits_to_merge$new <- gsub("-", "_", screen_hits_to_merge$new)

## merge togerther to create final df
input_for_enrichment <- merge(modules, screen_hits_to_merge, by.x = "id", by.y = "new", all.x = TRUE)
names(input_for_enrichment) <- c("new gene ID", "Cluster", "cons phenotype")
## modify to match vikash table
## remove NA values
input_for_enrichment <- input_for_enrichment[!is.na(input_for_enrichment$`cons phenotype`), ]
##clean up
rm(screen_hits_to_merge)

do significance test in python - update this to R at a later date - Vikash wrote this for enrichment of screen hits in bulk data

import os
import pandas as pd
from scipy.stats import hypergeom ## for hypergeomtric distributions
import numpy as np
import statsmodels.stats.multitest as mtest ## for multiple hypothesis testing
current_folder = os.getcwd() ## current directory path

def apply_enrich(tmp,sex_gene_list,outfile):
    ## groupby along Phenotyepes
    #First argumnet: temperory dataframe
    #Second argument: list of male-specific genes
    #Third argumnet: file where we store enrichment analysis

    M=len(tmp.index) # total number of genes
    pvals=[] # list for storing pvalues
    n_list=[] # store number of genes in cluster
    x_list=[] ## store number of sex-specific genes in cluster
    genes=[] ## we store genes (sex-specifc gene ids)
    clusters=[] ## store cluster number

    ## group clusters
    for k,v in tmp.groupby([ 'Cluster']).indices.items():
        ## print(k, len(v))
        clusters.append(k) ## store cluster number
        clust_genes=set(tmp.index[v].to_list()) ## genes in the cluster

        sex_gene_in_clust= set(sex_gene_list)& clust_genes ## how many sex-specific genes are found in cluster
        ## how many are in phenoype
        M=M ## total genes
        N=len(sex_gene_list) ## sex-specific genes
        n=len(clust_genes) ## total number of cluster genes

        rv = hypergeom(M, n, N) ## hypergeometric  distributions
        x=len(sex_gene_in_clust) ## number of sex-specific genes in cluster

        ## for p-value we need to get summation of all probalities greater than > x
        pval= 1-rv.cdf(x)
        pvals.append(pval)
        n_list.append(n)
        x_list.append(x)
        genes.append(', '.join(sex_gene_in_clust))
    fdr=mtest.multipletests(pvals, alpha=0.05, method='fdr_bh')
    enrich={'Cluster':clusters, 'pvals':pvals,'cluster_size':n_list,'# of genes found in cluster':x_list,'genes':genes,'FDR':fdr[1]}

    ## create enrichment table
    enrich_df=pd.DataFrame.from_dict(enrich)
    enrich_soreted=enrich_df.sort_values(by=['pvals'],ascending=True)

    enrich_soreted.to_csv(outfile,sep='\t',index=None)
    



def enrich_cluster_final():
    ''' Calculate p-value and FDR using enrichment analysis. We used hypergeometric test'''

    ### input file (provided by Oliver): this file has 3 columns
    # First column: 'new gene ID'
    # Second column: 'Cluster'
    # Third column: 'cons phenotype'
    ##
    #input_file=current_folder+'/Kasia new cluster enrichment for Vikash.txt'
    #df=pd.read_csv(input_file,sep='\t')## input file as a dataframe
    df = r.input_for_enrichment
    df
    #df=df.fillna('NA') ## nan is fill with NA
    # df['consensus phenotype']=df['consensus phenotype'].str.replace('None','NA')
    tmp=df.copy() ## this is the temperory data frame same as a original dataframe
    tmp.set_index('new gene ID',inplace=True) ## make gene ids as index

    ## seprate the dataframes according sex-specific phenotypes
    male_df=tmp[(tmp['cons phenotype']== 'CITH')]
    female_df=tmp[(tmp['cons phenotype']== 'DOZI')]
    both_df=tmp[(tmp['cons phenotype']== 'CITH_and_DOZI')]

    ## enrichment analysis for male
    outfile=current_folder+'/../data_to_export/module_enrichment_results/Module_enrichment_guerreiro_cith.txt'
    #First argumnet: temperory dataframe
    #Second argument: list of male-specific genes
    #Third argumnet: file where we store enrichment analysis
    apply_enrich(tmp,male_df.index.to_list(),outfile)

    ## enrichment analysis for female: similar as male

    outfile=current_folder+'/../data_to_export/module_enrichment_results/Module_enrichment_guerreiro_dozi.txt'
    apply_enrich(tmp ,female_df.index.to_list(),outfile)

    ## enrichment analysis for both sexes: : similar as male

    outfile=current_folder+'/../data_to_export/module_enrichment_results/Module_enrichment_guerreiro_both.txt'
    apply_enrich(tmp,both_df.index.to_list(),outfile)
if __name__ == '__main__':

   enrich_cluster_final()

Essential genes

Find out how many of the genes in each module has an asexual blood-stage phenotype gene

essential_genes <- read.csv(file = "../data/Reference/bushell_2017_data.csv", header = TRUE)
## extract info
essential_genes <- essential_genes[, c("P..berghei.current.ID", "Phenotype" )]
names(essential_genes) <- c("id", "phenotype")
## change the underscore to a dash
essential_genes$id <- gsub("_", "-", essential_genes$id)
dim(essential_genes)
[1] 2566    2
essential_genes <-
read.csv(file = "../data/Reference/bushell_2017_data.csv", header = TRUE)

## extract info
essential_genes <- essential_genes[, c("P..berghei.current.ID", "Phenotype" )]
names(essential_genes) <- c("id", "phenotype")
## change the underscore to a dash
essential_genes$id <- gsub("_", "-", essential_genes$id)
## remove any transcript numbers
#essential_genes$id <- sub("\\..*", "", essential_genes$id)

## find out which modules all screened genes are in
df_screened_gene_modules <- gene_module_df_sex[which(gene_module_df_sex$id %in% essential_genes$id),]
print("total genes screened in this module")
[1] "total genes screened in this module"
table(df_screened_gene_modules$module)

  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23 
179 149 133 115 109 110 106 112 102  95  83  79  80  63  74  64  60  55  52  47  42  32  23 
## extract 3 main phenotypes - there are only two fast genes, and 13 Insufficient data
e_genes <- essential_genes[essential_genes$phenotype == "Essential", ]$id
s_genes <- essential_genes[essential_genes$phenotype == "Slow", ]$id
d_genes <- essential_genes[essential_genes$phenotype == "Dispensable", ]$id

## find out which modules they are in
e_genes_gene_modules <- gene_module_df_sex[which(gene_module_df_sex$id %in% e_genes),]
print("essential genes by module")
[1] "essential genes by module"
table(e_genes_gene_modules$module)

 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 
49 84 62 62 17 62 53 47 67 56 32 52 26 30 16 33 40 17 22 20 16 10 10 
s_genes_gene_modules <- gene_module_df_sex[which(gene_module_df_sex$id %in% s_genes),]
print("slow genes by module")
[1] "slow genes by module"
table(s_genes_gene_modules$module)

 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 
19 28 14 25 15 27 24 16 14 22 16 14 18 12  6 12  9  8  9  8 12  4  4 
d_genes_gene_modules <- gene_module_df_sex[which(gene_module_df_sex$id %in% d_genes),]
print("dispensible genes by module")
[1] "dispensible genes by module"
table(d_genes_gene_modules$module)

  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23 
110  37  55  27  76  20  28  49  20  17  35  13  36  21  52  18  10  30  21  19  13  18   9 
## make a combined table with this info
pc_screened <- data.frame(essential = table(e_genes_gene_modules$module), 
                          slow = table(s_genes_gene_modules$module),
                          dispensible = table(d_genes_gene_modules$module), 
                          screened =  table(df_screened_gene_modules$module))[,-c(3, 5, 7)]
names(pc_screened) <- c("module", "essential", "slow", "dispensible", "screened")
pc_screened$pc_e <- (pc_screened$essential /pc_screened$screened)*100
pc_screened$pc_s <- (pc_screened$slow /pc_screened$screened)*100
pc_screened$pc_d <- (pc_screened$dispensible /pc_screened$screened)*100
## change row order:
row.order <- c("10", "9", "17", "4", "2", "6", "12", "14",
               "21", "7", 
               "22", "23","13","16", "18", "19", "11", "15", "5",
               "20", "8", "3", "1"
               )
## change the module to a string
#pc_screened$module <- as.numeric(as.character(pc_screened$module))
#pc_screened$module <- as.factor(pc_screened$module)
#pc_screened <- pc_screened[match(row.order, pc_screened$module), ]
pc_screened$module <- factor(pc_screened$module, levels = rev(c("10", "9", "17", "4", "2", "6", "12", "14",
               "21", "7", 
               "22", "23","13","16", "18", "19", "11", "15", "5",
               "20", "8", "3", "1"
               )))

library(scales) # For the percent_format() function

Attaching package: ‘scales’

The following object is masked from ‘package:viridis’:

    viridis_pal
 h1 <- ggplot(data = pc_screened, mapping = aes(x = module, fill=pc_e)) +
  geom_bar(col = "#FFFFFF", width = 1)+
      theme_void() +
    theme(panel.spacing.x = unit(1, "mm")) +
    scale_fill_continuous_sequential(palette = "Reds", labels = percent_format(scale = 1), limits=c(0,100)) +
  coord_flip()
 legend <- get_legend(h1)
 h1 <- h1 + theme(legend.position = "none")
 
  h2 <- ggplot(data = pc_screened, mapping = aes(x = module, fill=pc_s)) +
  geom_bar(col = "#FFFFFF", width = 1)+
      theme_void() +
    theme(panel.spacing.x = unit(1, "mm")) +
    scale_fill_continuous_sequential(palette = "Reds", labels = percent_format(scale = 1), limits=c(0,100)) +
  coord_flip()
 legend_2 <- get_legend(h2)
 h2 <- h2 + theme(legend.position = "none")
 
  h3 <- ggplot(data = pc_screened, mapping = aes(x = module, fill=pc_d)) +
  geom_bar(col = "#FFFFFF", width = 1)+
      theme_void() +
    theme(panel.spacing.x = unit(1, "mm")) +
    scale_fill_continuous_sequential(palette = "Reds", labels = percent_format(scale = 1), limits=c(0,100)) +
  coord_flip()
 legend_3 <- get_legend(h3 + theme(legend.position = "bottom", legend.box.margin = margin(0, 0, 0, 12)))
 h3 <- h3 + theme(legend.position = "none")
 
 ## add some space to the left of the legend as: https://wilkelab.org/cowplot/articles/shared_legends.html
#legend <- legend + theme(legend.box.margin = margin(0, 0, 0, 12))
 
 
bloodstage_annotation <- plot_grid(h1,h2,h3, nrow = 1, rel_widths = c(1,1,1))
bloodstage_annotation <- plot_grid(bloodstage_annotation,legend_3, nrow = 2, rel_heights = c(3,1))
bloodstage_annotation

ggsave("../images_to_export/bloodstage_annotation.png", plot = bloodstage_annotation, device = "png", path = NULL, scale = 1, width = 10, height = 10, units = "cm", dpi = 300, limitsize = TRUE)

set up df for python

## read in modules
modules <- as.data.frame(gene_module_df_sex)
## take cols of interest
modules <- modules[ ,c("id", "module"), drop = FALSE]
## change the underscore to a dash
modules$id <- gsub("-", "_", modules$id)

## read in phenotypes from screen
essential_genes <-
read.csv(file = "../data/Reference/bushell_2017_data.csv", header = TRUE)
## extract info
essential_genes <- essential_genes[, c("P..berghei.current.ID", "Phenotype" )]
names(essential_genes) <- c("id", "phenotype")
screen_hits_to_merge <- essential_genes

## merge togerther to create final df
input_for_enrichment <- merge(modules, screen_hits_to_merge, by.x = "id", by.y = "id", all.x = TRUE)
names(input_for_enrichment) <- c("new gene ID", "Cluster", "cons phenotype")
## modify to match vikash table
## remove NA values
input_for_enrichment <- input_for_enrichment[!is.na(input_for_enrichment$`cons phenotype`), ]
##clean up
rm(screen_hits_to_merge)

do significance test in python - update this to R at a later date - Vikash wrote this for enrichment of screen hits in bulk data

import os
import pandas as pd
from scipy.stats import hypergeom ## for hypergeomtric distributions
import numpy as np
import statsmodels.stats.multitest as mtest ## for multiple hypothesis testing
current_folder = os.getcwd() ## current directory path

def apply_enrich(tmp,sex_gene_list,outfile):
    ## groupby along Phenotyepes
    #First argumnet: temperory dataframe
    #Second argument: list of male-specific genes
    #Third argumnet: file where we store enrichment analysis

    M=len(tmp.index) # total number of genes
    pvals=[] # list for storing pvalues
    n_list=[] # store number of genes in cluster
    x_list=[] ## store number of sex-specific genes in cluster
    genes=[] ## we store genes (sex-specifc gene ids)
    clusters=[] ## store cluster number

    ## group clusters
    for k,v in tmp.groupby([ 'Cluster']).indices.items():
        ## print(k, len(v))
        clusters.append(k) ## store cluster number
        clust_genes=set(tmp.index[v].to_list()) ## genes in the cluster

        sex_gene_in_clust= set(sex_gene_list)& clust_genes ## how many sex-specific genes are found in cluster
        ## how many are in phenoype
        M=M ## total genes
        N=len(sex_gene_list) ## sex-specific genes
        n=len(clust_genes) ## total number of cluster genes

        rv = hypergeom(M, n, N) ## hypergeometric  distributions
        x=len(sex_gene_in_clust) ## number of sex-specific genes in cluster

        ## for p-value we need to get summation of all probalities greater than > x
        pval= 1-rv.cdf(x)
        pvals.append(pval)
        n_list.append(n)
        x_list.append(x)
        genes.append(', '.join(sex_gene_in_clust))
    fdr=mtest.multipletests(pvals, alpha=0.05, method='fdr_bh')
    enrich={'Cluster':clusters, 'pvals':pvals,'cluster_size':n_list,'# of genes found in cluster':x_list,'genes':genes,'FDR':fdr[1]}

    ## create enrichment table
    enrich_df=pd.DataFrame.from_dict(enrich)
    enrich_soreted=enrich_df.sort_values(by=['pvals'],ascending=True)

    enrich_soreted.to_csv(outfile,sep='\t',index=None)
    



def enrich_cluster_final():
    ''' Calculate p-value and FDR using enrichment analysis. We used hypergeometric test'''

    ### input file (provided by Oliver): this file has 3 columns
    # First column: 'new gene ID'
    # Second column: 'Cluster'
    # Third column: 'cons phenotype'
    ##
    #input_file=current_folder+'/Kasia new cluster enrichment for Vikash.txt'
    #df=pd.read_csv(input_file,sep='\t')## input file as a dataframe
    df = r.input_for_enrichment
    df
    #df=df.fillna('NA') ## nan is fill with NA
    # df['consensus phenotype']=df['consensus phenotype'].str.replace('None','NA')
    tmp=df.copy() ## this is the temperory data frame same as a original dataframe
    tmp.set_index('new gene ID',inplace=True) ## make gene ids as index

    ## seprate the dataframes according sex-specific phenotypes
    male_df=tmp[(tmp['cons phenotype']== 'Essential')]
    female_df=tmp[(tmp['cons phenotype']== 'Dispensable')]
    both_df=tmp[(tmp['cons phenotype']== 'Slow')]

    ## enrichment analysis for male
    outfile=current_folder+'/../data_to_export/module_enrichment_results/Module_enrichment_bushell_essential.txt'
    #First argumnet: temperory dataframe
    #Second argument: list of male-specific genes
    #Third argumnet: file where we store enrichment analysis
    apply_enrich(tmp,male_df.index.to_list(),outfile)

    ## enrichment analysis for female: similar as male

    outfile=current_folder+'/../data_to_export/module_enrichment_results/Module_enrichment_bushell_dispensable.txt'
    apply_enrich(tmp ,female_df.index.to_list(),outfile)

    ## enrichment analysis for both sexes: : similar as male

    outfile=current_folder+'/../data_to_export/module_enrichment_results/Module_enrichment_bushell_slow.txt'
    apply_enrich(tmp,both_df.index.to_list(),outfile)
if __name__ == '__main__':

   enrich_cluster_final()

Visualise module expression

plot out modules

UMAP_modules <- plot_cells(monocle.object, genes=gene_module_df_sex %>% filter(module %in% c(1:length(levels(gene_module_df_sex$module)))),
           cell_size = 2, 
           x = 1, y = 2,
           label_cell_groups=FALSE,
           scale_to_range = TRUE,
           show_trajectory_graph=FALSE) +
                          #scale_colour_viridis_c(name = "expression", option = "C", alpha = 1) +
                          scale_color_continuous_sequential(palette = "Purples 2") +
                          coord_fixed() +
                          theme_void() +
                          theme(legend.position = "bottom", strip.text.x = element_text(size = 15))
Scale for 'colour' is already present. Adding another scale for 'colour', which will replace the existing scale.

## view
UMAP_modules

save

#ggsave("../images_to_export/GCSKO_sexbranch_umap_modules.png", plot = UMAP_modules, device = "png", path = NULL, scale = 1, width = 30, height = 30, units = "cm", dpi = 300, limitsize = TRUE)
## make a dataframe of genes per module
genes_per_module <- as.data.frame(table(gene_module_df_sex$module))

## inspect
genes_per_module
## A. Preparation of dataframe

## prepare custom dataframe for all cells by modules:
agg_mat_no_group <- aggregate_gene_expression(monocle.object, gene_module_df_sex, scale_agg_values = TRUE)

## B. annotations

## make an anotation
## add pt to the monocle object
monocle.object@colData$pt_sex <- as.data.frame(pseudotime(monocle.object, reduction_method = "UMAP"))[,1]
## make an annotation dataframe
anno_no_group <- data.frame(monocle.object@colData$monocle_sex, monocle.object@colData$pt_sex, as.factor(monocle.object@colData$Prediction.Spearman._Kasia), row.names = rownames(monocle.object@colData))
names(anno_no_group) <- c("Sex", "Pseudotime", "Real_time_prediction")

## make annotation colours
annotation_colours <- list(Sex = c(Male="#016c00", Female="#a52b1e", Bipotential = "#ffe400", Asexual_Early = "#0052c5"),
                           Pseudotime = plasma(12, direction = 1),
                           Real_time_prediction = c("0" = viridis(8, direction = 1)[1] ,"1" =  viridis(8, direction = 1)[2] ,"4" = viridis(8, direction = 1)[3] ,"6" = viridis(8, direction = 1)[4] ,"8" = viridis(8, direction = 1)[5]  ,"12"  = viridis(8, direction = 1)[6]  ,"18" = viridis(8, direction = 1)[7]  ,"24" = viridis(8, direction = 1)[8]))

## change the order of the cols (cells) in data frame
col.order <- rownames(anno_no_group[with(anno_no_group, order(Sex, Pseudotime)), ])
agg_mat_no_group <- agg_mat_no_group[,col.order]

## reorder the rows (gene modules) in the data frame so they are in pt order
## define the order visually and using the clusters originally produced
row.order <- c("10", "9", "17", "4", "2", "6", "12", "14",
               "21", "7", 
               "22", "23","13","16", "18", "19", "11", "15", "5",
               "20", "8", "3", "1"
               )
## reorder using new order
agg_mat_no_group <- agg_mat_no_group[row.order, ]

## for cuts in columns - used later to count number of cells in each cat
df_meta <- as.data.frame(monocle.object@colData)
female_cells <- rownames(df_meta[which(df_meta$monocle_sex == "Female"), ])
male_cells <- rownames(df_meta[which(df_meta$monocle_sex == "Male"), ])
bi_cells <- rownames(df_meta[which(df_meta$monocle_sex == "Bipotential"), ])
asex_cells <- rownames(df_meta[which(df_meta$monocle_sex == "Asexual_Early"), ])
rm(df_meta)

## add module and the number of cells to the row
## change names for row names to include "module " at the begining of them
labels.row <- stringr::str_c("Module ", row.names(agg_mat_no_group))
## reorder frequency so that it is matching our matrix
genes_per_module_ordered <- genes_per_module[match(row.names(agg_mat_no_group), genes_per_module$Var1), ]
## add number of cells to the rownames for the module
for(i in seq_along(genes_per_module_ordered$Freq)){
  labels.row[i] <- stringr::str_c(labels.row[i]," (n = " ,genes_per_module_ordered$Freq[i], ")")
}

## C. Plotting

## plot
heatmap_main <- pheatmap::pheatmap(agg_mat_no_group,
                                   #scale="row",
                                   #color = diverging_hcl(100, palette = "Blue-Red 3"),
                                   cluster_cols = FALSE,
                                   cluster_rows = FALSE,
                                   ## others: ward.D2,
                                   #clustering_method="complete",
                                   scale = "none",
                                   show_colnames = FALSE,
                                   labels_row = labels.row,
                                   fontsize_row = 15,
                                   fontsize = 12,
                                   gaps_col = c(length(asex_cells), length(c(asex_cells,bi_cells)), length(c(asex_cells,bi_cells,female_cells))),
                                   annotation_col = anno_no_group, 
                                   annotation_colors = annotation_colours, 
                                   cutree_rows = 6
                                   )

## view
heatmap_main

save

ggsave("../images_to_export/GCSKO_sexbranch_heatmap.png", plot = heatmap_main, device = "png", path = NULL, scale = 1, width = 21, height = 21, units = "cm", dpi = 300, limitsize = TRUE)

Visualise the expression of select genes over pseudotime

## landmark genes (genes of interest)
# AP2G - PBANKA-1437500
# AP2 - PBANKA-0909600 - from poran paper
# AP2G-2 - PBANKA-1034300 
#list_of_mutant_genes <- c("PBANKA-0828000", "PBANKA-1302700", "PBANKA-1447900", "PBANKA-0102400", "PBANKA-0716500", "PBANKA-1435200", "PBANKA-1418100", "PBANKA-1144800", "PBANKA-0902300", "PBANKA-0413400", "PBANKA-1454800")

## define genes to plot
list_of_genes_of_interest <- c("PBANKA-0102400", "PBANKA-0413400", "PBANKA-0716500", "PBANKA-0828000", "PBANKA-0902300", "PBANKA-1144800", "PBANKA-1302700", "PBANKA-1418100", "PBANKA-1435200", "PBANKA-1447900", "PBANKA-1454800", "PBANKA-1437500", "PBANKA-1319500", "PBANKA-0416100", "PBANKA-1034300")
## add names
names_of_genes_of_interest <- c("GCSKO-2", "GCSKO-10", "GCSKO-19", "GCSKO-3", "GCSKO-13", "GCSKO-28", "GCSKO-oom", "GCSKO-17", "GCSKO-20", "GCSKO-29", "GCSKO-21", "AP2-G", "CCP2", "MG1", "AP2-G2")

##make df for genes of interest
genes_of_interest <- data.frame(gene = list_of_genes_of_interest, group = c(1:length(list_of_genes_of_interest)), name = names_of_genes_of_interest)
## reorder
#genes_of_interest <- genes_of_interest[match(c("AP2-G", "CCP2", "GCSKO-21", "GCSKO-17", "GCSKO-2", "MG1", "GCSKO-20", "GCSKO-3", "GCSKO-oom", "GCSKO-29", "GCSKO-10", "GCSKO-28", "GCSKO-19", "GCSKO-13"), genes_of_interest$name), ]

## prepare custom dataframe for all cells by modules:
agg_mat_genes_of_interest <- aggregate_gene_expression(monocle.object, genes_of_interest[,1:2], scale_agg_values = FALSE)

## reorder using new order
agg_mat_genes_of_interest <- agg_mat_genes_of_interest[,col.order]

## plot
heatmap_plot <- pheatmap::pheatmap(agg_mat_genes_of_interest, 
                   #scale="row",
                   cluster_cols = FALSE,
                   cluster_rows = TRUE,
                   clustering_method="ward.D2",
                   show_colnames = FALSE,
                   labels_row = as.character(genes_of_interest[,3]),
                   gaps_col = c(length(asex_cells), length(c(asex_cells,bi_cells)), length(c(asex_cells,bi_cells,female_cells))),
                   #gaps_row = c(1, 6),
                   cutree_rows = 3,
                   ## trying to fix legend issue here
                   #fontsize_row = 10,
                   #fontsize_col = 3,
                   #cellheight=3, 
                   #cellwidth = 3,
                   legend = TRUE,
                   annotation_legend = FALSE,
                   annotation_col = anno_no_group, 
                   annotation_colors = annotation_colours
                   )

heatmap_plot

investigate specific modules

## rename df
df_screen_hits_selected_module <- as.data.frame(gene_module_df_sex[gene_module_df_sex$module == "20", ])

## merge dfs together
module_20_annotated <- merge(gene_annotations, df_screen_hits_selected_module,by.x = "Gene.ID", by.y = "id")

## view
View(module_20_annotated)

4. Mapping on mutants

pca plots

DimPlot(tenx.justwt.integrated.sex, reduction = 'pca', group.by = 'monocle_sex')

Seurat method

pancreas.anchors <- FindTransferAnchors(reference = seurat.object, query = SMARTSEQ, 
    dims = 1:30)
predictions <- TransferData(anchorset = pancreas.anchors, refdata = seurat.object$monocle_sex, 
    dims = 1:30)
pancreas.query <- AddMetaData(pancreas.query, metadata = predictions)

Final Figures

## C
## This shows the cells selected for module analysis 
## this package allows easy extraction of viridis values used in the pt plots
library("colourvalues") # allows 
## extract colour hex values 
monocle.object@colData$pt_sex_col <- colour_values(monocle.object@colData$pt_sex, palette = "plasma")

## load in the whole dataset if you haven't already loaded it in
#tenx.justwt.integrated <- readRDS("../data_to_export/tenx.justwt.integrated.RDS")

## extract metadata
df_plot <- tenx.justwt.integrated@meta.data

## add umap - merge on row names and then make sure row names are not dropped or added
df_plot <- transform(merge(df_plot, tenx.justwt.integrated@reductions[["umap"]]@cell.embeddings, by=0, all=TRUE), row.names=Row.names, Row.names=NULL)

## make new col for colours - and make everything grey
df_plot$hex <- "#e7e7e7"

## extract colours for highlighted cells 
df_plot_2 <- as.data.frame(monocle.object@colData[,"pt_sex_col", drop = FALSE])

## then merge this back into the colour column, whilst matching the rows
rownames_to_match <- rownames(df_plot[rownames(df_plot) %in% rownames(df_plot_2), ])

df_plot$hex[rownames(df_plot) %in% rownames(df_plot_2)] <- df_plot_2[match(rownames_to_match, rownames(df_plot_2)), , drop = FALSE][ ,1]

### make character so ggplto2 recognises them
df_plot$hex <- as.character(df_plot$hex)

## reorder so that the voloured points are on top
## this is a bit hacky but you can split the data frame and then remerge, since the command commented out will still put E above other values - this command was just order by the col hex
df_plot_1 <- df_plot[!(df_plot$hex == "#e7e7e7"), ]
df_plot_2 <- df_plot[(df_plot$hex == "#e7e7e7"), ]
df_plot <- rbind(df_plot_2, df_plot_1)
rm(df_plot_2, df_plot_1)

## add tree
##The tree for monocle is located here:
# monocle.object@principal_graph_aux[["UMAP"]]$dp_mst 
ica_space_df <- t(monocle.object@principal_graph_aux[["UMAP"]]$dp_mst) %>%
      as.data.frame() %>%
      dplyr::select_(prin_graph_dim_1 = "UMAP_1", prin_graph_dim_2 = "UMAP_2") %>%
      dplyr::mutate(sample_name = rownames(.),
                    sample_state = rownames(.))

dp_mst <- monocle.object@principal_graph[["UMAP"]]

edge_df <- dp_mst %>%
      igraph::as_data_frame() %>%
      dplyr::select_(source = "from", target = "to") %>%
      dplyr::left_join(ica_space_df %>%
                         dplyr::select_(
                           source="sample_name",
                           source_prin_graph_dim_1="prin_graph_dim_1",
                           source_prin_graph_dim_2="prin_graph_dim_2"),
                       by = "source") %>%
      dplyr::left_join(ica_space_df %>%
                         dplyr::select_(
                           target="sample_name",
                           target_prin_graph_dim_1="prin_graph_dim_1",
                           target_prin_graph_dim_2="prin_graph_dim_2"),
                       by = "target")


umap_zoom_plot <- ggplot(df_plot, aes(x = UMAP_1, y = UMAP_2, colour = hex)) +
                         geom_point(size = 2) +
                        ## need this to tell ggplot2 to map to values
                         scale_colour_identity() +
                        ## fix coordinates
                         coord_fixed() +
                         theme_void() + 
                         theme(legend.position = "none") +
                         geom_segment(aes_string(x="source_prin_graph_dim_1",
                                                 y="source_prin_graph_dim_2",
                                                 xend="target_prin_graph_dim_1",
                                                 yend="target_prin_graph_dim_2"
                                                 ),
                                      data=edge_df, inherit.aes = FALSE
                                      )
  
  
umap_zoom_plot


## remove big dataset
#rm(tenx.justwt.integrated)
# Extract the legend. Returns a gtable
leg <- get_legend(umap_pt)

# Convert to a ggplot and print
legend_d <- as_ggplot(leg)

legend_d

save

ggsave("../images_to_export/Figure_D.png", plot = umap_zoom_plot, device = "png", path = NULL, scale = 1, width = 21, height = 29.7, units = "cm", dpi = 300, limitsize = TRUE)
ggsave("../images_to_export/Figure_D_legend.png", plot = legend_d, device = "png", path = NULL, scale = 1, width = 21, height = 29.7, units = "cm", dpi = 300, limitsize = TRUE)
## C
## This shows the cells selected for module analysis 
## this package allows easy extraction of viridis values used in the pt plots
library("colourvalues") # allows 
## extract colour hex values 
monocle.object@colData$rt_sex_col <- colour_values(monocle.object@colData$Prediction.Spearman., palette = "viridis")

## load in the whole dataset if you haven't already loaded it in
#tenx.justwt.integrated <- readRDS("../data_to_export/tenx.justwt.integrated.RDS")

## extract metadata
df_plot <- tenx.justwt.integrated@meta.data

## add umap - merge on row names and then make sure row names are not dropped or added
df_plot <- transform(merge(df_plot, tenx.justwt.integrated@reductions[["umap"]]@cell.embeddings, by=0, all=TRUE), row.names=Row.names, Row.names=NULL)

## make new col for colours - and make everything grey
df_plot$hex <- "#e7e7e7"

## extract colours for highlighted cells 
df_plot_2 <- as.data.frame(monocle.object@colData[,"rt_sex_col", drop = FALSE])

## then merge this back into the colour column, whilst matching the rows
rownames_to_match <- rownames(df_plot[rownames(df_plot) %in% rownames(df_plot_2), ])

df_plot$hex[rownames(df_plot) %in% rownames(df_plot_2)] <- df_plot_2[match(rownames_to_match, rownames(df_plot_2)), , drop = FALSE][ ,1]

### make character so ggplto2 recognises them
df_plot$hex <- as.character(df_plot$hex)

## reorder so that the voloured points are on top
## this is a bit hacky but you can split the data frame and then remerge, since the command commented out will still put E above other values - this command was just order by the col hex
df_plot_1 <- df_plot[!(df_plot$hex == "#e7e7e7"), ]
df_plot_2 <- df_plot[(df_plot$hex == "#e7e7e7"), ]
df_plot <- rbind(df_plot_2, df_plot_1)
rm(df_plot_2, df_plot_1)

umap_zoom_plot_rt <- ggplot(df_plot, aes(x = UMAP_1, y = UMAP_2, colour = hex)) +
                         geom_point(size = 2) +
                        ## need this to tell ggplot2 to map to values
                         scale_colour_identity(guide = "legend") +
                        ## fix coordinates
                         coord_fixed()
  
# Extract the legend. Returns a gtable
leg <- get_legend(umap_zoom_plot_rt)

# Convert to a ggplot and print
legend_d <- as_ggplot(leg)

legend_d

  
umap_zoom_plot_rt+theme(legend.position = "none") +
                         theme_void()


## remove big dataset
#rm(tenx.justwt.integrated)

save

ggsave("../images_to_export/UMAP_sex_id.png", plot = umap_zoom_plot_rt, device = "png", path = NULL, scale = 1, width = 21, height = 29.7, units = "cm", dpi = 300, limitsize = TRUE)
# 1 = blue - "#0052c5"
# 2 = red - "#a52b1e"
# 3 = green - "#016c00"
# 4 = yellow - "#ffe400"
#pal_sex <- c("#0052c5","#ffe400", "#a52b1e", "#016c00")

## extract pseudotime numbers and identity of cells to a dataframe
df_pt_id <- as.data.frame(monocle.object@colData[,c("pt_sex", "monocle_sex")])

## inspect possible values
list_of_sexes <- names(table(df_pt_id$monocle_sex))

## make a new column
df_pt_id$colour <- NA

## make colour ramps
asex_ramp <- colorRampPalette(c("#D5E3F5", "#0052c5"))
male_ramp <- colorRampPalette(c("#ABDDBF", "#016c00"))
female_ramp <- colorRampPalette(c("#F4C1BE", "#a52b1e"))
bipot_ramp <- colorRampPalette(c("white", "#ffe400"))

## re-classify the cells that are unassigned cells removed from sexual branch above:
#df_pt_id[which(rownames(df_pt_id) %in% remove_cells), ]$monocle_sex <- "Asexual"

## assign values to each cluster
## help here: https://stackoverflow.com/questions/9946630/colour-points-in-a-plot-differently-depending-on-a-vector-of-values 
df_pt_id[df_pt_id$monocle_sex == "Asexual_Early" | df_pt_id$monocle_sex == "Asexual_Late", ]$colour <- asex_ramp(100)[as.numeric(cut(df_pt_id[df_pt_id$monocle_sex == "Asexual_Early" | df_pt_id$monocle_sex == "Asexual_Late", ]$pt_sex,breaks = 100))]

df_pt_id[df_pt_id$monocle_sex == "Male", ]$colour <- male_ramp(100)[as.numeric(cut(df_pt_id[df_pt_id$monocle_sex == "Male", ]$pt_sex,breaks = 100))]

df_pt_id[df_pt_id$monocle_sex == "Female", ]$colour <- female_ramp(100)[as.numeric(cut(df_pt_id[df_pt_id$monocle_sex == "Female", ]$pt_sex,breaks = 100))]

df_pt_id[df_pt_id$monocle_sex == "Bipotential", ]$colour <- bipot_ramp(100)[as.numeric(cut(df_pt_id[df_pt_id$monocle_sex == "Bipotential", ]$pt_sex,breaks = 100))]

## ADD TO BIG OBJECT

## extract metadata
df_plot <- tenx.justwt.integrated@meta.data

## add umap - merge on row names and then make sure row names are not dropped or added
df_plot <- transform(merge(df_plot, tenx.justwt.integrated@reductions[["umap"]]@cell.embeddings, by=0, all=TRUE), row.names=Row.names, Row.names=NULL)

## make new col for colours - and make everything grey
df_plot$hex <- "#e7e7e7"

## extract colours for highlighted cells 
df_plot_2 <- as.data.frame(df_pt_id[,"colour", drop = FALSE])

## then merge this back into the colour column, whilst matching the rows
rownames_to_match <- rownames(df_plot[rownames(df_plot) %in% rownames(df_plot_2), ])

df_plot$hex[rownames(df_plot) %in% rownames(df_plot_2)] <- df_plot_2[match(rownames_to_match, rownames(df_plot_2)), , drop = FALSE][ ,1]

### make character so ggplto2 recognises them
df_plot$hex <- as.character(df_plot$hex)

## reorder so that the voloured points are on top
## this is a bit hacky but you can split the data frame and then remerge, since the command commented out will still put E above other values - this command was just order by the col hex
df_plot_1 <- df_plot[!(df_plot$hex == "#e7e7e7"), ]
df_plot_2 <- df_plot[(df_plot$hex == "#e7e7e7"), ]
df_plot <- rbind(df_plot_2, df_plot_1)
rm(df_plot_2, df_plot_1)

## make ggplot
umap_id_pt <- ggplot(df_plot, aes(x = UMAP_1, y = UMAP_2)) + 
                     geom_point(col = df_plot$hex) +
                     theme_void() +
                     coord_fixed()

umap_id_pt

save

ggsave("../images_to_export/UMAP_sex_id_pt.png", plot = umap_id_pt, device = "png", path = NULL, scale = 1, width = 21, height = 29.7, units = "cm", dpi = 300, limitsize = TRUE)

save modules

## modules are located in this object:
# gene_module_df_sex
write.csv(gene_module_df_sex, file = "../data_to_export/gene_module_df_sex.csv")

Appendix

Session Info

R version 4.0.3 (2020-10-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.7

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
 [1] stats4    parallel  grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] scales_1.1.1                scmap_1.10.0                latex2exp_0.4.0             colourvalues_0.3.7         
 [5] readxl_1.3.1                destiny_3.2.0               circlize_0.4.12             gganimate_1.0.7            
 [9] shiny_1.5.0                 monocle3_0.2.3.0            SingleCellExperiment_1.10.1 SummarizedExperiment_1.18.2
[13] DelayedArray_0.14.1         matrixStats_0.57.0          GenomicRanges_1.40.0        GenomeInfoDb_1.24.2        
[17] IRanges_2.22.2              S4Vectors_0.26.1            Biobase_2.48.0              BiocGenerics_0.34.0        
[21] Nebulosa_1.2.0              reshape2_1.4.4              Hmisc_4.4-1                 Formula_1.2-4              
[25] survival_3.2-7              lattice_0.20-41             gridExtra_2.3               dplyr_1.0.2                
[29] patchwork_1.0.1             ggplot2bdc_0.3.2            cowplot_1.1.0               ggpubr_0.4.0               
[33] ggplot2_3.3.2               viridis_0.5.1               viridisLite_0.3.0           Seurat_3.2.2               
[37] colorspace_1.4-1           

loaded via a namespace (and not attached):
  [1] ggthemes_4.2.4            coda_0.19-4               tidyr_1.1.2               knitr_1.30               
  [5] irlba_2.3.3               data.table_1.13.2         rpart_4.1-15              RCurl_1.98-1.2           
  [9] generics_0.0.2            callr_3.5.1               leidenbase_0.1.2          usethis_1.6.3            
 [13] RANN_2.6.1                proxy_0.4-24              future_1.19.1             spatstat.data_1.4-3      
 [17] httpuv_1.5.4              assertthat_0.2.1          gifski_0.8.6              xfun_0.18                
 [21] hms_0.5.3                 evaluate_0.14             promises_1.1.1            DEoptimR_1.0-8           
 [25] fansi_0.4.1               progress_1.2.2            DBI_1.1.0                 igraph_1.2.6             
 [29] htmlwidgets_1.5.2         spdep_1.1-5               purrr_0.3.4               ellipsis_0.3.1           
 [33] RSpectra_0.16-0           crosstalk_1.1.0.1         ks_1.12.0                 backports_1.1.10         
 [37] deldir_0.1-29             vctrs_0.3.4               TTR_0.24.2                remotes_2.2.0            
 [41] ROCR_1.0-11               abind_1.4-5               RcppEigen_0.3.3.7.0       withr_2.3.0              
 [45] grr_0.9.5                 robustbase_0.93-7         googleVis_0.6.10          checkmate_2.0.0          
 [49] vcd_1.4-8                 sctransform_0.3.1         xts_0.12.1                prettyunits_1.1.1        
 [53] mclust_5.4.7              goftest_1.2-2             cluster_2.1.0             lazyeval_0.2.2           
 [57] laeken_0.5.1              crayon_1.3.4              units_0.6-7               slam_0.1-47              
 [61] pkgconfig_2.0.3           labeling_0.4.2            tweenr_1.0.1              nlme_3.1-149             
 [65] pkgload_1.1.0             nnet_7.3-14               devtools_2.3.2            rlang_0.4.8              
 [69] globals_0.13.1            lifecycle_0.2.0           miniUI_0.1.1.1            rsvd_1.0.3               
 [73] randomForest_4.6-14       cellranger_1.1.0          rprojroot_1.3-2           polyclip_1.10-0          
 [77] RcppHNSW_0.3.0            lmtest_0.9-38             Matrix_1.2-18             raster_3.3-13            
 [81] carData_3.0-4             Matrix.utils_0.9.8        boot_1.3-25               zoo_1.8-8                
 [85] base64enc_0.1-3           ggridges_0.5.2            GlobalOptions_0.1.2       processx_3.4.4           
 [89] pheatmap_1.0.12           png_0.1-7                 bitops_1.0-6              KernSmooth_2.23-17       
 [93] DelayedMatrixStats_1.10.1 classInt_0.4-3            shape_1.4.5               stringr_1.4.0            
 [97] jpeg_0.1-8.1              rstatix_0.6.0             ggsignif_0.6.0            memoise_1.1.0            
[101] magrittr_2.0.1            plyr_1.8.6                hexbin_1.28.1             ica_1.0-2                
[105] gdata_2.18.0              zlibbioc_1.34.0           compiler_4.0.3            RColorBrewer_1.1-2       
[109] pcaMethods_1.80.0         fitdistrplus_1.1-1        cli_2.1.0                 LearnBayes_2.15.1        
[113] XVector_0.28.0            listenv_0.8.0             pbapply_1.4-3             ps_1.4.0                 
[117] htmlTable_2.1.0           ggplot.multistats_1.0.0   MASS_7.3-53               mgcv_1.8-33              
[121] tidyselect_1.1.0          stringi_1.5.3             forcats_0.5.0             yaml_2.2.1               
[125] latticeExtra_0.6-29       ggrepel_0.8.2             pbmcapply_1.5.0           tools_4.0.3              
[129] future.apply_1.6.0        rio_0.5.16                rstudioapi_0.11           foreign_0.8-80           
[133] smoother_1.1              scatterplot3d_0.3-41      farver_2.0.3              Rtsne_0.15               
[137] digest_0.6.27             BiocManager_1.30.10       Rcpp_1.0.6                car_3.0-10               
[141] broom_0.7.2               later_1.1.0.1             RcppAnnoy_0.0.16          httr_1.4.2               
[145] sf_0.9-6                  fs_1.5.0                  tensor_1.5                ranger_0.12.1            
[149] reticulate_1.18           splines_4.0.3             uwot_0.1.8                expm_0.999-5             
[153] spatstat.utils_1.17-0     sp_1.4-4                  spData_0.3.8              plotly_4.9.2.1           
[157] sessioninfo_1.1.1         xtable_1.8-4              jsonlite_1.7.1            spatstat_1.64-1          
[161] testthat_2.3.2            R6_2.5.0                  gmodels_2.18.1            pillar_1.4.6             
[165] htmltools_0.5.1.1         mime_0.9                  glue_1.4.2                fastmap_1.0.1            
[169] VIM_6.1.0                 class_7.3-17              codetools_0.2-16          utf8_1.1.4               
[173] pkgbuild_1.1.0            mvtnorm_1.1-1             tibble_3.0.4              curl_4.3                 
[177] leiden_0.3.3              gtools_3.8.2              zip_2.1.1                 openxlsx_4.2.2           
[181] limma_3.44.3              rmarkdown_2.5             desc_1.2.0                munsell_0.5.0            
[185] e1071_1.7-4               GenomeInfoDbData_1.2.3    haven_2.3.1               gtable_0.3.0             

Scaling values in the aggregated heatmap

getAnywhere(aggregate_gene_expression)
A single object matching ‘aggregate_gene_expression’ was found
It was found in the following places
  package:monocle3
  namespace:monocle3
with value

function (cds, gene_group_df = NULL, cell_group_df = NULL, norm_method = c("log", 
    "binary", "size_only"), pseudocount = 1, scale_agg_values = TRUE, 
    max_agg_value = 3, min_agg_value = -3, exclude.na = TRUE) 
{
    if (is.null(gene_group_df) && is.null(cell_group_df)) 
        stop("Error: one of either gene_group_df or cell_group_df must not be NULL")
    agg_mat <- normalized_counts(cds, norm_method = norm_method, 
        pseudocount = pseudocount)
    if (is.null(gene_group_df) == FALSE) {
        gene_group_df <- as.data.frame(gene_group_df)
        gene_group_df <- gene_group_df[gene_group_df[, 1] %in% 
            fData(cds)$gene_short_name | gene_group_df[, 1] %in% 
            row.names(fData(cds)), , drop = FALSE]
        short_name_mask <- gene_group_df[[1]] %in% fData(cds)$gene_short_name
        if (any(short_name_mask)) {
            geneids <- as.character(gene_group_df[[1]])
            geneids[short_name_mask] <- row.names(fData(cds))[match(geneids[short_name_mask], 
                fData(cds)$gene_short_name)]
            gene_group_df[[1]] <- geneids
        }
        agg_mat = as.matrix(my.aggregate.Matrix(agg_mat[gene_group_df[, 
            1], ], as.factor(gene_group_df[, 2]), fun = "sum"))
        if (scale_agg_values) {
            agg_mat <- t(scale(t(agg_mat)))
            agg_mat[agg_mat < min_agg_value] <- min_agg_value
            agg_mat[agg_mat > max_agg_value] <- max_agg_value
        }
    }
    if (is.null(cell_group_df) == FALSE) {
        cell_group_df <- as.data.frame(cell_group_df)
        cell_group_df <- cell_group_df[cell_group_df[, 1] %in% 
            row.names(pData(cds)), , drop = FALSE]
        agg_mat <- agg_mat[, cell_group_df[, 1]]
        agg_mat <- my.aggregate.Matrix(Matrix::t(agg_mat), as.factor(cell_group_df[, 
            2]), fun = "mean")
        agg_mat <- Matrix::t(agg_mat)
    }
    if (exclude.na) {
        agg_mat <- agg_mat[rownames(agg_mat) != "NA", colnames(agg_mat) != 
            "NA", drop = FALSE]
    }
    return(agg_mat)
}
<bytecode: 0x7ff952617628>
<environment: namespace:monocle3>
agg_mat = as.matrix(monocle3::my.aggregate.Matrix(agg_mat[gene_group_df[,1], ], as.factor(gene_group_df[, 2]), fun = "sum"))
Error in h(simpleError(msg, call)) : 
  error in evaluating the argument 'x' in selecting a method for function 'as.matrix': 'my.aggregate.Matrix' is not an exported object from 'namespace:monocle3'
## get an idea of the spread of z-score values 
# test <- (agg_mat_no_group)
# rowRanges(test)
# rowMeans(test)
# test <- t(agg_mat_no_group)
# names(test) = make.names(test)
# test = melt(test)
# ggplot(test, aes(x = Var2, y = value, group = Var2)) + geom_violin()
# rm(test)

In conclusion, the plots will look different if scaling is done by heatmap as it does not do the relimiting - i.e. anything < -3 and 3 < for the z-scores. the scaling is done on the transformed columns (e.g. when applying ‘scale’ to a matrix, it does it in a column-wise manner) which in this case, the modules are columns and so it does the correct scaling required. This is because the input is normalised cell counts and so the cells have already been scaled.

enrichment analysis in R first try

didn’t work

## this was derived from an answer here: https://stackoverflow.com/questions/64969842/how-to-calculate-hypergeometric-test-for-each-row-in-data-frame-with-bonferroni
## the test dataset 
# Total_mRNAs = Total_genes_in_screen = N (constant)
# subset_mRNAs = Total_hits_in_screen = n (constant)
# Total_targets_targets = Total_genes_in_module = K
# subset_targets = Hits_in_module = k

# Total_genes_in_screen <- nrow(screen_hits[!is.na(screen_hits$`Gam phenotype screen`), ])
# ## this is if you take the screened genes in the cluster
# #Total_genes_in_screen <- as.data.frame(pc_screened$screened)
# Total_hits_in_screen <- nrow(screen_hits[which(screen_hits$`Gam phenotype screen` == "Both" | screen_hits$`Gam phenotype screen` == "Females" | screen_hits$`Gam phenotype screen` == "Males"), ] )
# Hits_in_module <- as.data.frame(table(df_hits_gene_modules$module))$Freq
# Total_genes_in_module <- as.data.frame(table(gene_module_df_sex$module))$Freq
# Module_names <- as.data.frame(table(gene_module_df_sex$module))$Var1
# 
# df1 <- data.frame(Module_names = Module_names, Total_genes_in_module = Total_genes_in_module, Hits_in_module = Hits_in_module, Total_hits_in_screen = rep(Total_hits_in_screen, length(Module_names)), Total_genes_in_screen = rep(Total_genes_in_screen, length(Module_names)))
# 
# library(broom)
# result = lapply(1:nrow(df1),function(i){
#        not_target_subset = df1$Total_genes_in_module[i] - df1$Hits_in_module[i]
#        not_subset = df1$Total_genes_in_screen[i] - df1$Total_hits_in_screen[i] - not_target_subset
#        
#        
#        M = cbind(c(df1$Hits_in_module[i],df1$Total_hits_in_screen[i]-df1$Hits_in_module[i]),
#              c(not_target_subset,not_subset))
#       
#        res = data.frame(Module_names=df1$Module_names[i],
#                 tidy(fisher.test(M,alternative="greater")))
# 
#        return(res)
# })
# 
# ## bind everything together
# result = do.call(rbind,result)
# ## Adjust p value using bonferoni multiple hypothesis correction
# result$padj = p.adjust(result$p.value,"bonferroni")
# 
# result
LS0tCnN1YnRpdGxlOiAnR2FtZXRvY3l0ZSBEZXZlbG9wbWVudCBpbiA8aT5QbGFzbW9kaXVtIGJlcmdoZWk8L2k+Jwp0aXRsZTogfAogICFbXSguLi9HQ1NLT19sb2dvLmpwZyl7d2lkdGg9MzAwcHh9ICAKICBQc2V1ZG90aW1lIFNleHVhbCBCcmFuY2ggd2lsZC10eXBlIGNlbGxzIG9ubHkKYXV0aG9yOiAiW0FuZHJldyBSdXNzZWxsXShodHRwczovL2FqY3J1c3NlbGwud2l4c2l0ZS5jb20vbXlzaXRlL2Fib3V0KSIKaW5zdGl0dXRlOiBXZWxsY29tZSBTYW5nZXIgSW5zdGl0dXRlCmRhdGU6ICdgciBmb3JtYXQoU3lzLkRhdGUoKSwgIiVCICVkLCAlWSIpYCcKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogY29zbW8KICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDMKICAgICN0b2NfZmxvYXQ6IHllcwogICAgZGZfcHJpbnQ6IHBhZ2VkCi0tLQoqKioKIyAxLiBJbnRyb2R1Y3Rpb24gYW5kIEFpbXMgey50YWJzZXR9CgpXZSBoYXZlIG1lcmdlZCB0aGUgdHdvIGRhdGFzZXRzIHRvZ2V0aGVyIGluIEdDU0tPX21lcmdlX3d0LlJtZC4gV2UgYWxzbyBzdWJzZXR0ZWQgb3V0IHRoZSBwcmUtc2V4dWFsLWJyYW5jaCBhbmQgdGhlIHNleHVhbCBjZWxscyAobWFsZSBhbmQgZmVtYWxlKSBhbmQgc3RvcmVkIHRoZW0gaW4gYSBTZXVyYXQgb2JqZWN0IGNhbGxlZCB0ZW54Lmp1c3R3dC5pbnRlZ3JhdGVkLnNleCBIZXJlLCB3ZSB3aWxsIHBlcmZvcm0gcHNldWRvdGltZSBhbmFseXNpcyBvbiB0aGUgZGF0YXNldCBhbmQgYnVpbGQgbW9kdWxlcyBvZiBnZW5lcyB0aGF0IHNob3cgc2ltaWxhciBleHByZXNzaW9uIGFjcm9zcyB0aGlzIHBzZXVkb3RpbWUuCgojIDIuIFJlYWQgaW4gdGhlIGRhdGEgIHsudGFic2V0fQoKIyMgTG9hZC9JbnN0YWxsIHRoZSBSZXF1aXJlZCBQYWNrYWdlcwoKYGBge3IgbG9hZCBwYWNrYWdlcywgZWNobyA9IEZBTFNFfQojIyBDUkFOIHBhY2thZ2VzCgojIyBQYXRjaHdvcmsgaXMgbmVlZGVkIHRvIHN0aWNoIHBsb3RzIHRvZ2V0aGVyIHVzaW5nICcrJwppZihyZXF1aXJlKCJwYXRjaHdvcmsiLCBxdWlldGx5ID0gVFJVRSkpewogICAgcHJpbnQoInBhdGNod29yayBpcyBsb2FkZWQgY29ycmVjdGx5IikKfSBlbHNlIHsKICAgIHByaW50KCJ0cnlpbmcgdG8gaW5zdGFsbCBwYXRjaHdvcmsiKQogICAgaW5zdGFsbC5wYWNrYWdlcygicGF0Y2h3b3JrIikKICAgIGlmKHJlcXVpcmUocGF0Y2h3b3JrKSl7CiAgICAgICAgcHJpbnQoInBhdGNod29yayBpbnN0YWxsZWQgYW5kIGxvYWRlZCIpCiAgICB9IGVsc2UgewogICAgICAgIHN0b3AoImNvdWxkIG5vdCBpbnN0YWxsIHBhdGNod29yayIpCiAgICB9Cn0KCiMjIHZpcmlkaXMgYWxsb3dzIGRpZmZlcmVudCBjb2xvdXJzIHRvIGJlIGFkZGVkIHRvIHBsb3RzCmlmKHJlcXVpcmUoInZpcmlkaXMiLCBxdWlldGx5ID0gVFJVRSkpewogICAgcHJpbnQoInZpcmlkaXMgaXMgbG9hZGVkIGNvcnJlY3RseSIpCn0gZWxzZSB7CiAgICBwcmludCgidHJ5aW5nIHRvIGluc3RhbGwgdmlyaWRpcyIpCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJ2aXJpZGlzIikKICAgIGlmKHJlcXVpcmUodmlyaWRpcykpewogICAgICAgIHByaW50KCJ2aXJpZGlzIGluc3RhbGxlZCBhbmQgbG9hZGVkIikKICAgIH0gZWxzZSB7CiAgICAgICAgc3RvcCgiY291bGQgbm90IGluc3RhbGwgdmlyaWRpcyIpCiAgICB9Cn0KCiMjIFNldXJhdCBpcyBuZWVkZWQgZm9yIG1vc3Qgb2YgdGhpcyBzY3JpcHQKaWYocmVxdWlyZSgiU2V1cmF0IiwgcXVpZXRseSA9IFRSVUUpKXsKICAgIHByaW50KCJTZXVyYXQgaXMgbG9hZGVkIGNvcnJlY3RseSIpCn0gZWxzZSB7CiAgICBwcmludCgidHJ5aW5nIHRvIGluc3RhbGwgU2V1cmF0IikKICAgIGluc3RhbGwucGFja2FnZXMoIlNldXJhdCIpCiAgICBpZihyZXF1aXJlKFNldXJhdCkpewogICAgICAgIHByaW50KCJTZXVyYXQgaW5zdGFsbGVkIGFuZCBsb2FkZWQiKQogICAgfSBlbHNlIHsKICAgICAgICBzdG9wKCJjb3VsZCBub3QgaW5zdGFsbCBTZXVyYXQiKQogICAgfQp9CgojIyBjb3dwbG90IGlzIG5lZWRlZCBmb3IgcGxvdHMgaW4gdGhpcyBzY3JpcHQKaWYocmVxdWlyZSgiY293cGxvdCIpKXsKICAgIHByaW50KCJjb3dwbG90IGlzIGxvYWRlZCBjb3JyZWN0bHkiKQp9IGVsc2UgewogICAgcHJpbnQoInRyeWluZyB0byBpbnN0YWxsIGNvd3Bsb3QiKQogICAgaW5zdGFsbC5wYWNrYWdlcygiY293cGxvdCIpCiAgICBpZihyZXF1aXJlKGNvd3Bsb3QpKXsKICAgICAgICBwcmludCgiY293cGxvdCBpbnN0YWxsZWQgYW5kIGxvYWRlZCIpCiAgICB9IGVsc2UgewogICAgICAgIHN0b3AoImNvdWxkIG5vdCBpbnN0YWxsIGNvd3Bsb3QiKQogICAgfQp9CgojIyBncmlkRXh0cmEgaXMgbmVlZGVkIGZvciBncmlkIGdyYXBoaWNzIHRvIHBsb3QgbXVsdGlwbGUgcGxvdHMgaW4gdGhlIHNhbWUgdmlldwppZihyZXF1aXJlKCJncmlkRXh0cmEiKSl7CiAgICBwcmludCgiZ3JpZEV4dHJhIGlzIGxvYWRlZCBjb3JyZWN0bHkiKQp9IGVsc2UgewogICAgcHJpbnQoInRyeWluZyB0byBpbnN0YWxsIGdyaWRFeHRyYSIpCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJncmlkRXh0cmEiKQogICAgaWYocmVxdWlyZShncmlkRXh0cmEpKXsKICAgICAgICBwcmludCgiZ3JpZEV4dHJhIGluc3RhbGxlZCBhbmQgbG9hZGVkIikKICAgIH0gZWxzZSB7CiAgICAgICAgc3RvcCgiY291bGQgbm90IGluc3RhbGwgZ3JpZEV4dHJhIikKICAgIH0KfQoKIyMgZ3JpZCBpcyBuZWVkZWQgZm9yIGdyaWQuYXJyYW5nZSBmdW5jdGlvbiB0byBjaGFuZ2Ugc2l6ZSBvZiB0aXRsZQppZihyZXF1aXJlKCJncmlkIikpewogICAgcHJpbnQoImdyaWQgaXMgbG9hZGVkIGNvcnJlY3RseSIpCn0gZWxzZSB7CiAgICBwcmludCgidHJ5aW5nIHRvIGluc3RhbGwgZ3JpZCIpCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJncmlkIikKICAgIGlmKHJlcXVpcmUoZ3JpZCkpewogICAgICAgIHByaW50KCJncmlkIGluc3RhbGxlZCBhbmQgbG9hZGVkIikKICAgIH0gZWxzZSB7CiAgICAgICAgc3RvcCgiY291bGQgbm90IGluc3RhbGwgZ3JpZCIpCiAgICB9Cn0KCiMjZm9yIGRvaW5nIGJ1bGsgY29ycmVsYXRpb24gY2FsY3VsYXRpb25zCmlmKHJlcXVpcmUoIkhtaXNjIikpewogICAgcHJpbnQoIkhtaXNjIGlzIGxvYWRlZCBjb3JyZWN0bHkiKQp9IGVsc2UgewogICAgcHJpbnQoInRyeWluZyB0byBpbnN0YWxsIEhtaXNjIikKICAgIGluc3RhbGwucGFja2FnZXMoIkhtaXNjIikKICAgIGlmKHJlcXVpcmUoSG1pc2MpKXsKICAgICAgICBwcmludCgiSG1pc2MgaW5zdGFsbGVkIGFuZCBsb2FkZWQiKQogICAgfSBlbHNlIHsKICAgICAgICBzdG9wKCJjb3VsZCBub3QgaW5zdGFsbCBIbWlzYyIpCiAgICB9Cn0KCiMjIHJlc2hhcGUyIHRvIG1lbHQgZGF0YWZyYW1lcyBmb3IgcGxvdHRpbmc6CmlmKHJlcXVpcmUoInJlc2hhcGUyIikpewogICAgcHJpbnQoInJlc2hhcGUyIGlzIGxvYWRlZCBjb3JyZWN0bHkiKQp9IGVsc2UgewogICAgcHJpbnQoInRyeWluZyB0byBpbnN0YWxsIHJlc2hhcGUyIikKICAgIGluc3RhbGwucGFja2FnZXMoInJlc2hhcGUyIikKICAgIGlmKHJlcXVpcmUocmVzaGFwZTIpKXsKICAgICAgICBwcmludCgicmVzaGFwZTIgaW5zdGFsbGVkIGFuZCBsb2FkZWQiKQogICAgfSBlbHNlIHsKICAgICAgICBzdG9wKCJjb3VsZCBub3QgaW5zdGFsbCByZXNoYXBlMiIpCiAgICB9Cn0KCiMjIHRvIHdvcmsgd2l0aCBkYXRhIGZyYW1lczoKaWYocmVxdWlyZSgiZHBseXIiKSl7CiAgICBwcmludCgiZHBseXIgaXMgbG9hZGVkIGNvcnJlY3RseSIpCn0gZWxzZSB7CiAgICBwcmludCgidHJ5aW5nIHRvIGluc3RhbGwgZHBseXIiKQogICAgaW5zdGFsbC5wYWNrYWdlcygiZHBseXIiKQogICAgaWYocmVxdWlyZShkcGx5cikpewogICAgICAgIHByaW50KCJkcGx5ciBpbnN0YWxsZWQgYW5kIGxvYWRlZCIpCiAgICB9IGVsc2UgewogICAgICAgIHN0b3AoImNvdWxkIG5vdCBpbnN0YWxsIGRwbHlyIikKICAgIH0KfQoKIyMgdGhpcyBhbGxvd3MgdXMgdG8gdXNlIHRoZSBjb2xvclJhbXAyIGZ1bmN0aW9uIHdoaWNoIGFsbG93cyB1cyB0byBwbG90IG5pY2UgY29sb3VyIGdyYWRpZW50IHBhbHM6CmlmKHJlcXVpcmUoImNpcmNsaXplIikpewogICAgcHJpbnQoImNpcmNsaXplIGlzIGxvYWRlZCBjb3JyZWN0bHkiKQp9IGVsc2UgewogICAgcHJpbnQoInRyeWluZyB0byBpbnN0YWxsIGNpcmNsaXplIikKICAgIGluc3RhbGwucGFja2FnZXMoImNpcmNsaXplIikKICAgIGlmKHJlcXVpcmUoY2lyY2xpemUpKXsKICAgICAgICBwcmludCgiY2lyY2xpemUgaW5zdGFsbGVkIGFuZCBsb2FkZWQiKQogICAgfSBlbHNlIHsKICAgICAgICBzdG9wKCJjb3VsZCBub3QgaW5zdGFsbCBjaXJjbGl6ZSIpCiAgICB9Cn0KCiMjIG5vbi1DUkFOIHBhY2thZ2VzCgojIyBtb25vY2xlMyB0byBjYWxjdWxhdGUgcHNldWRvdGltZToKaWYocmVxdWlyZSgibW9ub2NsZTMiKSl7CiAgICBwcmludCgibW9ub2NsZTMgaXMgbG9hZGVkIGNvcnJlY3RseSIpCn0gZWxzZSB7CiAgICBwcmludCgiUGxlYXNlIGluc3RhbGwgbW9ub2NsZTMgKGh0dHBzOi8vY29sZS10cmFwbmVsbC1sYWIuZ2l0aHViLmlvL21vbm9jbGUzL2RvY3MvaW5zdGFsbGF0aW9uLykiKQp9CgojIyBkZXN0aW55IGlzIHVzZWQgZm9yIGRpZmZ1c2lvbiBwbG90cyAoRGlmZnVzaW9uTWFwIGZ1bmN0aW9uKQppZihyZXF1aXJlKCJkZXN0aW55IikpewogICAgcHJpbnQoImRlc3RpbnkgaXMgbG9hZGVkIGNvcnJlY3RseSIpCn0gZWxzZSB7CiAgcHJpbnQoInRyeWluZyB0byBpbnN0YWxsIGRlc3RpbnkiKQogIGlmICghcmVxdWlyZU5hbWVzcGFjZSgiQmlvY01hbmFnZXIiLCBxdWlldGx5ID0gVFJVRSkpCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJCaW9jTWFuYWdlciIpCiAgQmlvY01hbmFnZXI6Omluc3RhbGwoImRlc3RpbnkiKQogIGlmKHJlcXVpcmUoZGVzdGlueSkpewogICAgICAgIHByaW50KCJkZXN0aW55IGluc3RhbGxlZCBhbmQgbG9hZGVkIikKICAgIH0gZWxzZSB7CiAgICAgICAgc3RvcCgiY291bGQgbm90IGluc3RhbGwgZGVzdGlueSIpCiAgICB9Cn0KCmxpYnJhcnkoY29sb3JzcGFjZSkKCiNzZXQgdGhlIHNlZWQgZm9yIGJvdGggdGhlIG1peHR1cmUgbW9kZWxzIGFuZCBhbHNvIGZvciB0aGUgc2FtcGxlIGZ1bmN0aW9uIGxhdGVyIG9uOgpzZXQuc2VlZCgtOTI0OTcpCmBgYAoKIyMgbG9hZCBkYXRhCgpgYGB7cn0KIyMgbG9hZCBzZXggb25seSBicmFuY2ggY2VsbHMgc2F2ZWQgZnJvbSBHQ1NLT19TZXhfQnJhbmNoX0FuYWx5c2lzLlJtZAojIyBSZXN0b3JlIHRoZSBvYmplY3RzCiMjIGxvYWQgc2V4IGJyYW5jaCBkYXRhc2V0CnRlbnguanVzdHd0LmludGVncmF0ZWQuc2V4IDwtIHJlYWRSRFMoIi4uL2RhdGFfdG9fZXhwb3J0L3RlbnguanVzdHd0LmludGVncmF0ZWQuc2V4LlJEUyIpCiMjIGxvYWQgZnVsbCBkYXRhc2V0CiN0ZW54Lm11dGFudC5pbnRlZ3JhdGVkIDwtIHJlYWRSRFMoIi4uL2RhdGFfdG9fZXhwb3J0L3RlbngubXV0YW50LmludGVncmF0ZWQuUkRTIikKYGBgCgpgYGB7cn0KIyMgYWRkIG9sZCBwdCB2YWx1ZXMKIyMgdGhlc2UgdmFsdWVzIGFyZSBjYWxjdWxhdGVkIGluIGh0ZSBHQ1NLT19wc2V1ZG90aW1lX2FsbGNlbGxzLlJtZCBzY3JpcHQgYW5kIHNvIHdlcmUgYWRkZWQgYWZ0ZXIgdGhlIG9iamVjdCB3YXMgc3BsaXQgaW50byBzZXggb25seS4KI3RlbnguYWxsIDwtIHJlYWRSRFMoIi4uL2RhdGFfdG9fZXhwb3J0L3RlbngubXV0YW50LmludGVncmF0ZWQuUkRTIikKI3RlbnguYWxsLm1ldGEgPC0gYXMuZGF0YS5mcmFtZSh0ZW54LmFsbEBtZXRhLmRhdGEpCiN0ZW54LmFsbC5tZXRhIDwtIHRlbnguYWxsLm1ldGFbd2hpY2gocm93bmFtZXModGVueC5hbGwubWV0YSkgJWluJSByb3duYW1lcyh0ZW54Lm11dGFudC5pbnRlZ3JhdGVkLnNleEBtZXRhLmRhdGEpKSxdCiN0ZW54Lm11dGFudC5pbnRlZ3JhdGVkLnNleCA8LSBBZGRNZXRhRGF0YSh0ZW54Lm11dGFudC5pbnRlZ3JhdGVkLnNleCwgdGVueC5hbGwubWV0YSRvbGRfcHRfdmFsdWVzLCBjb2wubmFtZSA9ICJvbGRfcHRfdmFsdWVzIikKIyMgdGhlbiByZW1vdmUgdGhlc2Ugb2JqZWN0cyBzbyB0aGV5IGRvbid0IHVzZSB1cCBtZW1vcnkKI3JtKHRlbnguYWxsLCB0ZW54LmFsbC5tZXRhKQpgYGAKCkFkZCBhIG1ldGEuZGF0YSBjb2x1bW4gc28gdGhhdCAxMFggaXMgbGlzdGVkIGFzIFdUOgpgYGB7cn0KIyMgZ2V0IGNlbGxzIHRoYXQgYXJlIGZpbHRlcmVkIG91dAptdXRhbnRfY2VsbHMgPC0gd2hpY2godGVueC5qdXN0d3QuaW50ZWdyYXRlZC5zZXgkZXhwZXJpbWVudCA9PSAibXV0YW50cyIpCgojIyBtYWtlIGV4dHJhIGNvbHVtbiBpbiBwbG90dGluZyBkZgp0ZW54Lmp1c3R3dC5pbnRlZ3JhdGVkLnNleEBtZXRhLmRhdGEkaWRlbnRpdHlfbmFtZV9jb21iaW5lZCA8LSAiV1RfMTBYIgp0ZW54Lmp1c3R3dC5pbnRlZ3JhdGVkLnNleEBtZXRhLmRhdGEkaWRlbnRpdHlfbmFtZV9jb21iaW5lZFttdXRhbnRfY2VsbHNdIDwtIHRlbnguanVzdHd0LmludGVncmF0ZWQuc2V4QG1ldGEuZGF0YSRpZGVudGl0eV9uYW1lX3VwZGF0ZWRbbXV0YW50X2NlbGxzXQoKIyMgY2hlY2sKdGFibGUodGVueC5qdXN0d3QuaW50ZWdyYXRlZC5zZXhAbWV0YS5kYXRhJGlkZW50aXR5X25hbWVfY29tYmluZWQpCmBgYAoKYGBge3J9CiMjIGNyZWF0ZSBhIGxpc3Qgb2Ygb3VyIG11dGFudCBnZW5lIElEcwpsaXN0X29mX211dGFudF9nZW5lcyA8LSBjKCJQQkFOS0EtMDgyODAwMCIsICJQQkFOS0EtMTMwMjcwMCIsICJQQkFOS0EtMTQ0NzkwMCIsICJQQkFOS0EtMDEwMjQwMCIsICJQQkFOS0EtMDcxNjUwMCIsICJQQkFOS0EtMTQzNTIwMCIsICJQQkFOS0EtMTQxODEwMCIsICJQQkFOS0EtMTE0NDgwMCIsICJQQkFOS0EtMDkwMjMwMCIsICJQQkFOS0EtMDQxMzQwMCIsICJQQkFOS0EtMTQ1NDgwMCIpCmBgYAoKUmVhZCBpbiBnZW5lIGFubm90YXRpb25zCmBgYHtyfQpnZW5lX2Fubm90YXRpb25zIDwtIHJlYWQudGFibGUoIi4uL2RhdGEvUmVmZXJlbmNlL0dlbmVzQnlUYXhvbl9TdW1tYXJ5LmNzdiIsIGhlYWRlciA9IFRSVUUsIHNlcCA9ICIsIiwgc3RyaW5nc0FzRmFjdG9ycyA9IFRSVUUpCmRpbShnZW5lX2Fubm90YXRpb25zKQoKIyMgY29udmVydCBfIHRvIC0KZ2VuZV9hbm5vdGF0aW9ucyRHZW5lLklEIDwtIGdzdWIoIl8iLCAiLSIsIGdlbmVfYW5ub3RhdGlvbnMkR2VuZS5JRCkKYGBgCgojIDMuIE1vbm9jbGUgb24gc2V4IGNlbGxzIHsudGFic2V0fQoKIyMgY2FsY3VsYXRlIHBzZXVkb3RpbWUgYW5kIG1vZHVsZXMKCiMjIyMgUHJlcGFyYXRpb24KYGBge3J9CiMjIGV4dHJhY3RzIG9ubHkgMTB4IGNlbGxzIGFuZCBhbHNvIHJlbW92ZSBjbHVzdGVyIDAgY2VsbHMgCnd0X2NlbGxzIDwtIHJvd25hbWVzKHRlbnguanVzdHd0LmludGVncmF0ZWQuc2V4QG1ldGEuZGF0YVt3aGljaCh0ZW54Lmp1c3R3dC5pbnRlZ3JhdGVkLnNleEBtZXRhLmRhdGEkaWRlbnRpdHlfbmFtZV9jb21iaW5lZCA9PSAiV1RfMTBYIiAmICF0ZW54Lmp1c3R3dC5pbnRlZ3JhdGVkLnNleEBtZXRhLmRhdGEkc2V1cmF0X2NsdXN0ZXJzID09ICIzIiksXSkKCiMgJiAhdGVueC5qdXN0d3QuaW50ZWdyYXRlZC5zZXhAbWV0YS5kYXRhJHNldXJhdF9jbHVzdGVycyA9PSAiNiIKCiMjIG1ha2UgYSBuZXcgU2V1cmF0IG9mIHRoaXMKc2V1cmF0Lm9iamVjdCA8LXN1YnNldCh0ZW54Lmp1c3R3dC5pbnRlZ3JhdGVkLnNleCwgY2VsbHMgPSB3dF9jZWxscykKCiMjIGNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgcGJfc2V4X2ZpbHRlcmVkIG9iamVjdAojZGF0YV90ZXN0IDwtIGFzKGFzLm1hdHJpeChHZXRBc3NheURhdGEocGJfc2V4X2ZpbHRlcmVkLCBhc3NheSA9ICJSTkEiLCBzbG90ID0gImRhdGEiKSksICdzcGFyc2VNYXRyaXgnKQojaXMuZXF1YWwKI2lzLmlkZW50aWNhbAoKIyMgZXh0cmFjdCBjb3VudHMgYW5kIHBoZW5vOgojIyB0aGUgcmVhc29uIHdlIHVzZSB0aGUgaW50ZWdyYXRlZCBhbmQgdGhlbiBzdWJzZXR0ZWQgaXMgYmVjYXVzZSB0aGVzZSBjZWxscyBoYXZlIGJlZW4gbm9ybWFsaXNlZCB3aGVyZWFzIHRoZSBjZWxscyBpbiBwYl9zZXhfZmlsdGVyZWQgaGF2ZSBub3QgYmVlbiBub3JtYWxpc2VkICh3ZWxsIHRoZXkgaGF2ZSBidXQgd2l0aCBkb3VibGV0cyBpbiB0aGVtKQojIyB3aXRoIDEweCBvbmx5IGNlbGxzOiBhbGwuZXF1YWwoYXMuZGF0YS5mcmFtZShjb3VudHMobW9ub2NsZS5vYmplY3QpKSwgYXMuZGF0YS5mcmFtZShhcy5tYXRyaXgoR2V0QXNzYXlEYXRhKHNldXJhdC5vYmplY3QsIGFzc2F5ID0gIlJOQSIsIHNsb3QgPSAiY291bnRzIikpKSkgcmV0dXJucyBUUlVFIGFuZCBhbHNvIHJldHVybnMgdHJ1ZSB3aGVuIHlvdSBjaGFuZ2UgdGhlIHNsb3QgaW5wdXQgdG8gImNvdW50cyIgYW5kIHVzZSBtb25vY2xlIHRvIG5vcm0gaXQgd2l0aCBtZXRob2QgImxvZyIKZGF0YSA8LSBhcyhhcy5tYXRyaXgoR2V0QXNzYXlEYXRhKHNldXJhdC5vYmplY3QsIGFzc2F5ID0gIlJOQSIsIHNsb3QgPSAiY291bnRzIikpLCAnc3BhcnNlTWF0cml4JykKIyMgbWFrZSBwaGVub2RhdGEKcGQgPC0gZGF0YS5mcmFtZShzZXVyYXQub2JqZWN0QG1ldGEuZGF0YSkKIyMga2VlcCBvbmx5IHRoZSBjb2x1bW5zIHRoYXQgYXJlIHJlbGV2YW50IGluIG1ldGFkYXRhCiNwRGF0YSA8LSBwZCAlPiUgc2VsZWN0KG9yaWcuaWRlbnQsIG5Db3VudF9STkEsIG5GZWF0dXJlX1JOQSkKIyMgbWFrZSBnZW5lIG1ldGFkYXRhCmZEYXRhIDwtIGRhdGEuZnJhbWUoZ2VuZV9zaG9ydF9uYW1lID0gcm93Lm5hbWVzKGRhdGEpLCByb3cubmFtZXMgPSByb3cubmFtZXMoZGF0YSkpCgojIyBDb25zdHJ1Y3QgbW9ub2NsZSBjZHMKbW9ub2NsZS5vYmplY3QgPC0gbmV3X2NlbGxfZGF0YV9zZXQoZXhwcmVzc2lvbl9kYXRhID0gZGF0YSwgY2VsbF9tZXRhZGF0YSA9IHBkLCBnZW5lX21ldGFkYXRhID0gZkRhdGEpCgojIyBwcmVwcm9jZXNzCm1vbm9jbGUub2JqZWN0ID0gcHJlcHJvY2Vzc19jZHMobW9ub2NsZS5vYmplY3QsIG51bV9kaW0gPSA1MCwgbm9ybV9tZXRob2QgPSAibG9nIikKIyMjIGlmIHVzaW5nIGludGVncmF0ZWQgZGF0YToKIyBub3JtX21ldGhvZCA9ICJub25lIiwgYWxpZ25tZW50X2dyb3VwID0gIn4gZXhwZXJpbWVudCIKCiMjIHBsb3QgamFjayBzdHJhdyBwbG90CiNwbG90X3BjX3ZhcmlhbmNlX2V4cGxhaW5lZChtb25vY2xlLm9iamVjdCkKCiNtb25vY2xlLm9iamVjdCA9IHJlZHVjZV9kaW1lbnNpb24obW9ub2NsZS5vYmplY3QsIHJlZHVjdGlvbl9tZXRob2QgPSAiVU1BUCIsIHByZXByb2Nlc3NfbWV0aG9kID0gIlBDQSIsIHVtYXAubWV0cmljID0gImV1Y2xpZGVhbiIsIHVtYXAubl9uZWlnaGJvcnMgPSA1MCwgdW1hcC5taW5fZGlzdCA9IDAuNSwgdmVyYm9zZSA9IEZBTFNFKQoKI3Bsb3RfY2VsbHMobW9ub2NsZS5vYmplY3QsIGNvbG9yX2NlbGxzX2J5PSJleHBlcmltZW50IikKCiMjIGdyYXBoIGxlYXJuaW5nCgojIyBhZGQgVU1BUCBmcm9tIFNldXJhdAptb25vY2xlLm9iamVjdEBpbnRfY29sRGF0YUBsaXN0RGF0YSRyZWR1Y2VkRGltc0BsaXN0RGF0YVtbIlVNQVAiXV0gPC0gc2V1cmF0Lm9iamVjdEByZWR1Y3Rpb25zW1sidW1hcCJdXUBjZWxsLmVtYmVkZGluZ3MKIyMgaWYgeW91IHdhbnQgdGhlIG9sZCBVTUFQIGZyb20gdGhlIG9yaWdpbmFsIGFsbCBjZWxscyBvbmUsIHVzZTogIkRJTV9VTUFQIgoKIyMgY2x1c3RlcgojIyB0aGlzIGlzIGVzc2VudGlhbCB0byBydW4gdGhlIGxlYXJuX2dyYXBoIGZ1bmN0aW9uIGxhdGVyIG9uCm1vbm9jbGUub2JqZWN0ID0gY2x1c3Rlcl9jZWxscyhtb25vY2xlLm9iamVjdCkKCiMjIHBsb3QgaW5pdGlhbCBjbHVzdGVyaW5nIGJ5IG1vbm9jbGUKI3Bsb3RfY2VsbHMobW9ub2NsZS5vYmplY3QsIGNvbG9yX2NlbGxzX2J5PSJjbHVzdGVyIiwgZ3JvdXBfY2VsbHNfYnk9InBhcnRpdGlvbiIsIHggPSAyLCB5ID0gMSkKCiMjIG1hcCBwc2V1ZG90aW1lCm1vbm9jbGUub2JqZWN0ID0gbGVhcm5fZ3JhcGgobW9ub2NsZS5vYmplY3QsIGxlYXJuX2dyYXBoX2NvbnRyb2w9bGlzdChuY2VudGVyPTU1MCwgbWluaW1hbF9icmFuY2hfbGVuID0gMzApLCB1c2VfcGFydGl0aW9uID0gRkFMU0UpCiMgbGVhcm5fZ3JhcGhfY29udHJvbD1saXN0KG5jZW50ZXI9NTAwKSAtIHBsYXkgd2l0aCB0aGlzIHBhcmFtZXRlciAtIGxvd2VyIHRlbmRzIHRvIGdpdmUgZmV3ZXIgYnJhbmNoZXMgYW5kIGhpZ2hlciB0ZW5kcyB0byBnaXZlIG1vcmUKIyA1MDAgLSBvbGQgYW5hbHlzaXMKIyAyNTAgLSBuZXcgYW5hbHlzaXMgCgojIyBQbG90IGNlbGxzCnBsb3RfY2VsbHMobW9ub2NsZS5vYmplY3QsIGNvbG9yX2NlbGxzX2J5PSJtb25vY2xlX3NleCIsIGdyb3VwX2NlbGxzX2J5PSJwYXJ0aXRpb24iLCB4ID0gMSwgeSA9IDIpCmBgYAoKUmVkZWZpbmUgdGhlIGlkZW50aXRpZXMgb2YgdGhlIG1hbGUgYW5kIGZlbWFsZSBjZWxscyAKCm1hbGUKYGBge3J9CiMgbW9ub2NsZS5vYmplY3RfbWFsZSA8LSBjaG9vc2VfZ3JhcGhfc2VnbWVudHMobW9ub2NsZS5vYmplY3QpCmBgYApmZW1hbGUKYGBge3J9CiMgbW9ub2NsZS5vYmplY3RfZmVtYWxlIDwtIGNob29zZV9ncmFwaF9zZWdtZW50cyhtb25vY2xlLm9iamVjdCkKYGBgCmJpcG90ZW50aWFsCmBgYHtyfQojbW9ub2NsZS5vYmplY3RfYmlwb3QgPC0gY2hvb3NlX2dyYXBoX3NlZ21lbnRzKG1vbm9jbGUub2JqZWN0KQpgYGAKYXNleHVhbApgYGB7cn0KI21vbm9jbGUub2JqZWN0X2FzZXggPC0gY2hvb3NlX2dyYXBoX3NlZ21lbnRzKG1vbm9jbGUub2JqZWN0KQpgYGAKYXNleHVhbCBmYXRlCmBgYHtyfQojbW9ub2NsZS5vYmplY3RfYXNleF9mYXRlIDwtIGNob29zZV9ncmFwaF9zZWdtZW50cyhtb25vY2xlLm9iamVjdCkKYGBgCgpjaGVjawpgYGB7cn0KIyBkZl9mcmVxIDwtIGRhdGEuZnJhbWUodGFibGUoYyhjb2xuYW1lcyhtb25vY2xlLm9iamVjdF9tYWxlKSwgY29sbmFtZXMobW9ub2NsZS5vYmplY3RfZmVtYWxlKSwgY29sbmFtZXMobW9ub2NsZS5vYmplY3RfYmlwb3QpLCBjb2xuYW1lcyhtb25vY2xlLm9iamVjdF9hc2V4KSwgY29sbmFtZXMobW9ub2NsZS5vYmplY3RfYXNleF9mYXRlKSkpKQojIHBhc3RlKCJudW1iZXIgb2YgY2VsbHMgaW4gc2V1cmF0IG9iamVjdCBpcyIsIGxlbmd0aChjb2xuYW1lcyhtb25vY2xlLm9iamVjdCkpLCAiLiBUaGUgbnVtYmVyIG9mIGNlbGxzIHNlbGVjdGVkIGhlcmUgd2l0aCBhbiBpZGVudGl0aXR5IGlzIiwgZGltKGRmX2ZyZXEpWzFdKQojIGRmX2ZyZXEgPC0gZGZfZnJlcVtkZl9mcmVxJEZyZXEgPiAxLCBdCiMgZGZfZnJlcQpgYGAKSW5zcGVjdCB3aGVyZSB0aGVzZSBtaXNzaW5nIGNlbGxzIGFyZToKYGBge3J9CiMgJyVuaSUnIDwtIE5lZ2F0ZSgnJWluJScpCiMgCiMgbm90X2Fzc2lnbmVkX2NlbGxzIDwtIGNvbG5hbWVzKG1vbm9jbGUub2JqZWN0KVtjb2xuYW1lcyhtb25vY2xlLm9iamVjdCkgJW5pJSBjKGNvbG5hbWVzKG1vbm9jbGUub2JqZWN0X21hbGUpLCBjb2xuYW1lcyhtb25vY2xlLm9iamVjdF9mZW1hbGUpLCBjb2xuYW1lcyhtb25vY2xlLm9iamVjdF9iaXBvdCksIGNvbG5hbWVzKG1vbm9jbGUub2JqZWN0X2FzZXgpLCBjb2xuYW1lcyhtb25vY2xlLm9iamVjdF9hc2V4X2ZhdGUpKV0KIyAKIyBEaW1QbG90KHNldXJhdC5vYmplY3QsIHJlcGVsID0gVFJVRSwgbGFiZWwuc2l6ZSA9IDUsIHB0LnNpemUgPSAwLjUsIGNlbGxzLmhpZ2hsaWdodCA9IG5vdF9hc3NpZ25lZF9jZWxscywgZGltcyA9IGMoMiwxKSwgcmVkdWN0aW9uID0gIkRJTV9VTUFQIikgKwojICAgY29vcmRfZml4ZWQoKSArIAojICAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcz1jKCIjMDAwMDAwIiwgIiNmNTRlMWUiKSkKYGBgCgpgYGB7cn0KIyAjIyBjcmVhdGUgYW5ub3RhdGlvbiBkYXRhZnJhbWUgZnJvbSB0aGVzZSByZXN1bHRzOgojIGRmX21vbm9jbGVfc2V4ZXMgPC0gcmJpbmQoZGF0YS5mcmFtZSgiY2VsbF9uYW1lIiA9IGNvbG5hbWVzKG1vbm9jbGUub2JqZWN0X21hbGUpLCAic2V4IiA9IHJlcCgiTWFsZSIsIGxlbmd0aChjb2xuYW1lcyhtb25vY2xlLm9iamVjdF9tYWxlKSkpKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZnJhbWUoImNlbGxfbmFtZSIgPSBjb2xuYW1lcyhtb25vY2xlLm9iamVjdF9mZW1hbGUpLCAic2V4IiA9IHJlcCgiRmVtYWxlIiwgbGVuZ3RoKGNvbG5hbWVzKG1vbm9jbGUub2JqZWN0X2ZlbWFsZSkpKSksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmZyYW1lKCJjZWxsX25hbWUiID0gY29sbmFtZXMobW9ub2NsZS5vYmplY3RfYmlwb3QpLCAic2V4IiA9IHJlcCgiQmlwb3RlbnRpYWwiLCBsZW5ndGgoY29sbmFtZXMobW9ub2NsZS5vYmplY3RfYmlwb3QpKSkpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5mcmFtZSgiY2VsbF9uYW1lIiA9IGNvbG5hbWVzKG1vbm9jbGUub2JqZWN0X2FzZXgpLCAic2V4IiA9IHJlcCgiQXNleHVhbCIsIGxlbmd0aChjb2xuYW1lcyhtb25vY2xlLm9iamVjdF9hc2V4KSkpKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZnJhbWUoImNlbGxfbmFtZSIgPSBjb2xuYW1lcyhtb25vY2xlLm9iamVjdF9hc2V4X2ZhdGUpLCAic2V4IiA9IHJlcCgiQXNleHVhbF9GYXRlIiwgbGVuZ3RoKGNvbG5hbWVzKG1vbm9jbGUub2JqZWN0X2FzZXhfZmF0ZSkpKSksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmZyYW1lKCJjZWxsX25hbWUiID0gbm90X2Fzc2lnbmVkX2NlbGxzLCAic2V4IiA9IHJlcCgiVW5hc3NpZ25lZCIsIGxlbmd0aChub3RfYXNzaWduZWRfY2VsbHMpKSkKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICkKIyAKIyBkaW0oZGZfbW9ub2NsZV9zZXhlcykKIyAKIyAjIyBvcmRlciBsaWtlIHRoZSBtZXRhZGF0YQojIGRmX21vbm9jbGVfc2V4ZXMgPC0gZGZfbW9ub2NsZV9zZXhlc1ttYXRjaChyb3duYW1lcyhtb25vY2xlLm9iamVjdEBjb2xEYXRhKSwgZGZfbW9ub2NsZV9zZXhlcyRjZWxsX25hbWUpLCBdCiMgCiMgIyMgYWRkIHRoaXMgYmFjayBpbnRvIHRoZSBtb25vY2xlIG9iamVjdAojIG1vbm9jbGUub2JqZWN0QGNvbERhdGEkU2V4ZXNfbW9ub2NsZSA8LSBkZl9tb25vY2xlX3NleGVzJHNleApgYGAKCiMjIyMgUHNldWRvdGltZSBDYWxjdWxhdGlvbgpgYGB7cn0KIyMgT3JkZXIgdGhlIGNlbGxzIGFuZCBjYWxjdWxhdGUgcHNldWRvdGltZQptb25vY2xlLm9iamVjdCA9IG9yZGVyX2NlbGxzKG1vbm9jbGUub2JqZWN0KQoKIyMgUGxvdAp1bWFwX3B0IDwtIHBsb3RfY2VsbHMobW9ub2NsZS5vYmplY3QsIGNvbG9yX2NlbGxzX2J5ID0gInBzZXVkb3RpbWUiLCBsYWJlbF9jZWxsX2dyb3Vwcz1GQUxTRSwgY2VsbF9zaXplID0gMSwgeCA9IDEsIHkgPSAyLCBsYWJlbF9icmFuY2hfcG9pbnRzPUZBTFNFLCBsYWJlbF9sZWF2ZXM9RkFMU0UsIGxhYmVsX2dyb3Vwc19ieV9jbHVzdGVyPUZBTFNFLCBsYWJlbF9yb290cyA9IEZBTFNFKSArCiAgY29vcmRfZml4ZWQoKSArCiAgdGhlbWVfdm9pZCgpICsKICBsYWJzKHRpdGxlID0gIlBzZXVkb3RpbWUiKSArCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgc2l6ZT0xNSksIGxlZ2VuZC5wb3NpdGlvbj0iYm90dG9tIiwgbGVnZW5kLnRpdGxlPWVsZW1lbnRfdGV4dCAoc2l6ZT0xMCksIGxlZ2VuZC50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTEwKSkgKyAKICBndWlkZXMoY29sb3VyID0gZ3VpZGVfY29sb3VyYmFyKGJhcndpZHRoID0gMTAsIGJhcmhlaWdodCA9IDAuNSwgdGl0bGUgPSAiUHNldWRvdGltZSIpKQoKIyMgdmlldwp1bWFwX3B0CmBgYAoKIyMjIyBDaGVjayBob3cgd2VsbCBpdCBjb3JyZWxhdGVzIHdpdGggdGhlIG9yaWdpbmFsIHBzZXVkb3RpbWUKCndoZW4gcHNldWRvdGltZSB3YXMgY2FsY3VsYXRlZCBvbiB0aGUgd2hvbGUgb2JqZWN0CgpgYGB7cn0KbGlicmFyeShnZ3B1YnIpCiMjIGV4dHJhY3QgcHNldWRvdGltZSB2YWx1ZXM6CnB0X3ZhbHVlc19uZXcgPC0gYXMuZGF0YS5mcmFtZShwc2V1ZG90aW1lKG1vbm9jbGUub2JqZWN0LCByZWR1Y3Rpb25fbWV0aG9kID0gIlVNQVAiKSkKcHRfdmFsdWVzX25ldyRjZWxsX25hbWUgPC0gcm93bmFtZXMocHRfdmFsdWVzX25ldykKbWV0YV9kYXRhX2RmIDwtIGFzLmRhdGEuZnJhbWUobW9ub2NsZS5vYmplY3RAY29sRGF0YSkKbWV0YV9kYXRhX2RmJGNlbGxfbmFtZSA8LSByb3duYW1lcyhtZXRhX2RhdGFfZGYpCm1ldGFfZGF0YV9kZiA8LSBtZXJnZShtZXRhX2RhdGFfZGYsIHB0X3ZhbHVlc19uZXcsIGJ5ID0gImNlbGxfbmFtZSIpCm5hbWVzKG1ldGFfZGF0YV9kZilbbmNvbChtZXRhX2RhdGFfZGYpXTwtICJwdCIKCmdncGxvdChtZXRhX2RhdGFfZGYsIGFlcyh4ID0gb2xkX3B0X3ZhbHVlcywgeSA9IHB0LCBjb2xvdXIgPSBtb25vY2xlX3NleCkpICsgCiAgZ2VvbV9wb2ludCgpICsgIAogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gRkFMU0UpICsKICB0aGVtZV9jbGFzc2ljKCkgKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIpCmBgYAoKIyMjIyBNb2R1bGUgQ29uc3RydWN0aW9uCmBgYHtyfQojIyBmaW5kIGdlbmVzIHRoYXQgY2hhbmdlIGFzIGEgZnVuY3Rpb24gb2YgcHQ6Cm1vbm9jbGUub2JqZWN0X3ByX3Rlc3RfcmVzIDwtIGdyYXBoX3Rlc3QobW9ub2NsZS5vYmplY3QsIG5laWdoYm9yX2dyYXBoPSJwcmluY2lwYWxfZ3JhcGgiLCBjb3Jlcz04LCBleHByZXNzaW9uX2ZhbWlseSA9ICJuZWdiaW5vbWlhbCIpCiMgZXhwbGFpbnMgZXhwcmVzc2lvbiBmYW1pbHkgLSBodHRwczovL2NvbGUtdHJhcG5lbGwtbGFiLmdpdGh1Yi5pby9tb25vY2xlMy9kb2NzL2RpZmZlcmVudGlhbC8gLSByZXN1bHRzIHdlcmUgc2FtZSBmb3IgZWl0aGVyIGRlZmF1bHkgb3IgbmVnYmlub21pYWwKCiMjIGZpbmQgc2lnbmlmaWNhbnQgZ2VuZXMKIyMgSSB1c2VkIDAuMDUgcHJldmlvdXNseSBpbiBhbGwgY2VsbHMgCiMjIDI4ODQgdy4gcCA9IDAuMDEsIDMyNjAgdy4gcCA9IDAuMDUKcHJfZGVnX2lkcyA8LSByb3cubmFtZXMoc3Vic2V0KG1vbm9jbGUub2JqZWN0X3ByX3Rlc3RfcmVzLCBxX3ZhbHVlIDwgMC4wNSkpCgojIyBjb2xsZWN0IGludG8gbW9kdWxlcwpnZW5lX21vZHVsZV9kZl9zZXggPC0gZmluZF9nZW5lX21vZHVsZXMobW9ub2NsZS5vYmplY3RbcHJfZGVnX2lkcyxdLCByZXNvbHV0aW9uPWMoMTBec2VxKC02LDIpKSwgcmFuZG9tX3NlZWQgPSAxMjM0KQoKIyMgaG93IG1hbnkgZ2VuZXMgaW4gbW9kdWxlcz8KZGltKGdlbmVfbW9kdWxlX2RmX3NleCkKYGBgCgpgYGB7ciwgZWNobyA9IEZBTFNFfQpwYXN0ZSgidGhlcmUgYXJlIiwgbGVuZ3RoKGxldmVscyhnZW5lX21vZHVsZV9kZl9zZXgkbW9kdWxlKSksICJtb2R1bGVzIikKYGBgCgojIyBQbG90IE1vZHVsZXMKCiMjIyMgR2VuZXJhbCBNb2R1bGUgQ29tcG9zaXRpb24KCk1ha2UgYSBkYXRhZnJhbWUgdG8gcGxvdCBieSBhZ2dyZWdhdGluZyBjbHVzdGVycyB2cy4gbW9kdWxlcwpgYGB7cn0KIyMgbWFrZSBjZWxsIGdyb3VwIGRmCmNlbGxfZ3JvdXBfZGYgPC0gdGliYmxlOjp0aWJibGUoY2VsbD1yb3cubmFtZXMoY29sRGF0YShtb25vY2xlLm9iamVjdCkpLCBjZWxsX2dyb3VwPWNvbERhdGEobW9ub2NsZS5vYmplY3QpJHNldXJhdF9jbHVzdGVycykKCiMjIG1ha2UgcGxvdHRpbmcgZGYKI2FnZ19tYXQgPC0gYWdncmVnYXRlX2dlbmVfZXhwcmVzc2lvbihtb25vY2xlLm9iamVjdCwgZ2VuZV9tb2R1bGVfZGZfc2V4LCBjZWxsX2dyb3VwX2RmKQpgYGAKCkZpbmQgb3V0IGhvdyBtYW55IGdlbmVzIHRoZXJlIGFyZSBwZXIgdG90YWwgc28gd2UgY2FuIGFkZCB0aGlzIHRvIHRoZSBwbG90CmBgYHtyfQojIyBob3cgbWFueSBnZW5lcyBwZXIgbW9kdWxlPwpnZW5lc19wZXJfbW9kdWxlIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoZ2VuZV9tb2R1bGVfZGZfc2V4JG1vZHVsZSkpCmdlbmVzX3Blcl9tb2R1bGUKYGBgCgpGaW5kIG91dCB3aGljaCBtb2R1bGVzIG91ciBtdXRhbnQgZ2VuZXMgcmVzaWRlIGluCmBgYHtyfQojIyBjcmVhdGUgYSBsaXN0IG9mIG91ciBtdXRhbnQgZ2VuZSBJRHMKbGlzdF9vZl9tdXRhbnRfZ2VuZXMgPC0gYygiUEJBTktBLTA4MjgwMDAiLCAiUEJBTktBLTEzMDI3MDAiLCAiUEJBTktBLTE0NDc5MDAiLCAiUEJBTktBLTAxMDI0MDAiLCAiUEJBTktBLTA3MTY1MDAiLCAiUEJBTktBLTE0MzUyMDAiLCAiUEJBTktBLTE0MTgxMDAiLCAiUEJBTktBLTA5MDIzMDAiLCAiUEJBTktBLTA0MTM0MDAiLCAiUEJBTktBLTE0NTQ4MDAiKQoKIyMgbWFrZSBhIGRhdGFmcmFtZSB0byBjb252ZXJ0IHRoZSBnZW5lIElEcyBpbnRvIGFjdHVhbCBJRHMKc3MyX211dGFudHNfZmluYWwgPC0gcmVhZFJEUygiLi4vZGF0YV90b19leHBvcnQvc3MyX211dGFudHNfZmluYWwuUkRTIikKZGZfbXV0YW50X2lkcyA8LSBhcy5kYXRhLmZyYW1lKHVuaXF1ZShjYmluZChzczJfbXV0YW50c19maW5hbEBtZXRhLmRhdGEkaWRlbnRpdHlfZ2VuZV91cGRhdGVkLCBzczJfbXV0YW50c19maW5hbEBtZXRhLmRhdGEkaWRlbnRpdHlfdXBkYXRlZCwgc3MyX211dGFudHNfZmluYWxAbWV0YS5kYXRhJGlkZW50aXR5X25hbWVfdXBkYXRlZCkpKVstYygyKSxdCnJtKHNzMl9tdXRhbnRzX2ZpbmFsKQojIHJlbW92ZSB0aGUgIjgyMCIgYml0IG9uIDEwCmRmX211dGFudF9pZHMkVjEgPC0gZ3N1YigiXzgyMCIsICIiLCBkZl9tdXRhbnRfaWRzJFYxKQojIGNoYW5nZSB0aGUgdW5kZXJzY29yZSAoXykgdG8gYSBkYXNoICgtKSBpbiBnZW5lIElEcwpkZl9tdXRhbnRfaWRzJFYxIDwtIGdzdWIoIl8iLCAiLSIsIGRmX211dGFudF9pZHMkVjEpCm5hbWVzKGRmX211dGFudF9pZHMpIDwtIGMoImdlbmVfSUQiLCAibXV0YW50X2lkZW50aXR5IiwgIm11dGFudF9pZGVudGl0eV8yIikKCiMjIHN1YnNldCBtb2R1bGVzIGRmIHRvIGluY2x1ZGUgb25seSBtdXRhbnQgZ2VuZSBJRHMKZGZfbXV0YW50X2dlbmVfbW9kdWxlcyA8LSBhcy5kYXRhLmZyYW1lKGdlbmVfbW9kdWxlX2RmX3NleFt3aGljaChnZW5lX21vZHVsZV9kZl9zZXgkaWQgJWluJSBsaXN0X29mX211dGFudF9nZW5lcyksXSkKbmFtZXMoZGZfbXV0YW50X2dlbmVfbW9kdWxlcylbMV0gPC0gImdlbmVfSUQiCgojIyBtZXJnZSBkYXRhZnJhbWVzCmRmX211dGFudF9nZW5lX21vZHVsZXMgPC0gbWVyZ2UoZGZfbXV0YW50X2dlbmVfbW9kdWxlcywgZGZfbXV0YW50X2lkcywgYnkgPSAiZ2VuZV9JRCIpCgojIyBJbnNwZWN0CmRmX211dGFudF9nZW5lX21vZHVsZXNbb3JkZXIoZGZfbXV0YW50X2dlbmVfbW9kdWxlcyRtb2R1bGUpLCBdCmBgYAoKc28gbW9kdWxlcyBvZiBpbnRlcmVzdCBhcmU6CmBgYHtyfQp0YWJsZShkZl9tdXRhbnRfZ2VuZV9tb2R1bGVzJG1vZHVsZSkKYGBgCgpXaGljaCBtb2R1bGVzIGRvIG90aGVyIGdlbmVzIG9mIGludGVyZXN0IGxpZSBpbj86CmBgYHtyfQojIyBsYW5kbWFyayBnZW5lcyAoZ2VuZXMgb2YgaW50ZXJlc3QpCiMgQVAyRyAtIFBCQU5LQS0xNDM3NTAwCiMgQVAyIC0gUEJBTktBLTA5MDk2MDAgLSBmcm9tIHBvcmFuIHBhcGVyCiMgQVAyRy0yIC0gUEJBTktBLTEwMzQzMDAgCiMgY2NwMiAtICJQQkFOS0EtMTMxOTUwMCIgLSBmZW1hbGUgODIwCiMgcDI1IC0gIlBCQU5LQS0wNTE1MDAwIiAtIGZlbWFsZQojIHAyOCAtICJQQkFOS0EtMDUxNDkwMCIgLSBmZW1hbGUKIyBjY3AzIC0gIlBCQU5LQS0xMDM1MjAwIiAtIGZlbWFsZSAtICBodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUM1OTA5MTIyLwojIG5lazQgLSAiUEJBTktBLTA2MTY3MDAiIC0gZmVtYWxlCiMgYXAyLWZnIC0gIlBCQU5LQS0xNDE1NzAwIiAtIGZlbWFsZSAKIyBkb3ppIC0gIlBCQU5LQS0xMjE3NzAwIiAtIGZlbWFsZQojIE1HMSAtICJQQkFOS0EtMDQxNjEwMCIgLSBtYWxlIDgyMAojIGhhcDIgLSAiUEJBTktBLTEyMTI2MDAiIC0gbWFsZQojIE1BUEsyIC0gIlBCQU5LQS0wOTMzNzAwIiAtIG1hbGUKIyBuZWsxIC0gIlBCQU5LQS0xNDQzMDAwIiAtIG1hbGUKIyBjZHBrNCAtICJQQkFOS0EtMDYxNTIwMCIgLSBtYWxlCgojIyBjcmVhdGUgYSBsaXN0IG9mIGxhbmRtYXJrIGdlbmVzCmxpc3Rfb2ZfbGFuZG1hcmtfZ2VuZXMgPC0gYygiUEJBTktBLTE0Mzc1MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBCQU5LQS0wOTA5NjAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQQkFOS0EtMTAzNDMwMCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBCQU5LQS0xMzE5NTAwIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUEJBTktBLTA1MTUwMDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBCQU5LQS0wNTE0OTAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQQkFOS0EtMTAzNTIwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUEJBTktBLTA2MTY3MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBCQU5LQS0xNDE1NzAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQQkFOS0EtMTIxNzcwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUEJBTktBLTA0MTYxMDAiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQQkFOS0EtMTIxMjYwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUEJBTktBLTA5MzM3MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBCQU5LQS0xNDQzMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQQkFOS0EtMDYxNTIwMCIpCgpuYW1lX29mX2xhbmRtYXJrX2dlbmVzIDwtIGMoIkFQMi1HIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQVAyX3BvcmFuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQVAyLUcyIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2NwMiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInAyNSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInAyOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2NwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVrNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXAyLWZnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJET1pJIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZzEiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXAyIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWFwazIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lazEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImNkcGs0IikKCiMjIG1ha2UgYSBkZgpuYW1lX29mX2xhbmRtYXJrX2dlbmVzIDwtIGRhdGEuZnJhbWUoImdlbmVfbmFtZSIgPSBuYW1lX29mX2xhbmRtYXJrX2dlbmVzLCAiaWQiID0gbGlzdF9vZl9sYW5kbWFya19nZW5lcykKCiMjIG1ha2UgZGF0YWZyYW1lCmRmX2xhbmRtYXJrX2dlbmVfbW9kdWxlcyA8LSBnZW5lX21vZHVsZV9kZl9zZXhbd2hpY2goZ2VuZV9tb2R1bGVfZGZfc2V4JGlkICVpbiUgbGlzdF9vZl9sYW5kbWFya19nZW5lcyksXQoKIyMgbWVyZ2UgZGF0YWZyYW1lcwpkZl9sYW5kbWFya19nZW5lX21vZHVsZXMgPC0gbWVyZ2UoZGZfbGFuZG1hcmtfZ2VuZV9tb2R1bGVzLCBuYW1lX29mX2xhbmRtYXJrX2dlbmVzLCBieSA9ICJpZCIpCgojIyBpbnNwZWN0CmRmX2xhbmRtYXJrX2dlbmVfbW9kdWxlc1tvcmRlcihkZl9sYW5kbWFya19nZW5lX21vZHVsZXMkbW9kdWxlKSwgXQpgYGAKCiMjIyMgZW5yaWNobWVudCBvZiBzY3JlZW4gaGl0cyBpbiBtb2R1bGVzCmBgYHtyfQojIyByZWFkIGluIHNjcmVlbiBoaXRzCmxpYnJhcnkoInJlYWR4bCIpCnNjcmVlbl9oaXRzIDwtIHJlYWRfZXhjZWwoIi4uL2RhdGEvU2NyZWVuL01vZHVsZXNfQ2x1c3RlcnNfUGhlbm90eXBlcy54bHN4IikKCiMjIGdldCBvbmx5IGhpdHMKc2NyZWVuX2hpdHNfc2VsZWN0ZWQgPC0gc2NyZWVuX2hpdHNbd2hpY2goc2NyZWVuX2hpdHMkYEdhbSBwaGVub3R5cGUgc2NyZWVuYCA9PSAiQm90aCIgfCBzY3JlZW5faGl0cyRgR2FtIHBoZW5vdHlwZSBzY3JlZW5gID09ICJGZW1hbGVzIiB8IHNjcmVlbl9oaXRzJGBHYW0gcGhlbm90eXBlIHNjcmVlbmAgPT0gIk1hbGVzIiksIF0gCgojIyBleHRyYWN0IGdlbmUgSURzCmdlbmVfaGl0cyA8LSBzY3JlZW5faGl0c19zZWxlY3RlZCRgbmV3IGdlbmUgSURgCiMjIGNoYW5nZSB0aGUgdW5kZXJzY29yZSB0byBhIGRhc2gKZ2VuZV9oaXRzIDwtIGdzdWIoIl8iLCAiLSIsIGdlbmVfaGl0cykKCiMjIGZpbmQgb3V0IHdoaWNoIG1vZHVsZXMgdGhleSBhcmUgaW4KZGZfaGl0c19nZW5lX21vZHVsZXMgPC0gZ2VuZV9tb2R1bGVfZGZfc2V4W3doaWNoKGdlbmVfbW9kdWxlX2RmX3NleCRpZCAlaW4lIGdlbmVfaGl0cyksXQpwcmludCgic2NyZWVuIGhpdHMgYnkgbW9kdWxlIikKdGFibGUoZGZfaGl0c19nZW5lX21vZHVsZXMkbW9kdWxlKQoKIyMgZ2V0IHRoZSBudW1iZXIgZ2VuZXMgc2NyZWVuZWQgaW4gdGhhdCBtb2R1bGUKc2NyZWVuX2hpdHNfc2NyZWVuZWQgPC0gc2NyZWVuX2hpdHNbd2hpY2goc2NyZWVuX2hpdHMkYEdhbSBwaGVub3R5cGUgc2NyZWVuYCA9PSAiQm90aCIgfCBzY3JlZW5faGl0cyRgR2FtIHBoZW5vdHlwZSBzY3JlZW5gID09ICJGZW1hbGVzIiB8IHNjcmVlbl9oaXRzJGBHYW0gcGhlbm90eXBlIHNjcmVlbmAgPT0gIk1hbGVzIiB8IHNjcmVlbl9oaXRzJGBHYW0gcGhlbm90eXBlIHNjcmVlbmAgPT0gIk5vbmUiIHwgc2NyZWVuX2hpdHMkYEdhbSBwaGVub3R5cGUgc2NyZWVuYCA9PSAibWFsZSBub3QgZW5vdWdoIHBvd2VyIiksIF0gCiMjIGV4dHJhY3QgZ2VuZSBJRHMKZ2VuZXNfc2NyZWVuZWQgPC0gc2NyZWVuX2hpdHNfc2NyZWVuZWQkYG5ldyBnZW5lIElEYAojIyBjaGFuZ2UgdGhlIHVuZGVyc2NvcmUgdG8gYSBkYXNoCmdlbmVzX3NjcmVlbmVkIDwtIGdzdWIoIl8iLCAiLSIsIGdlbmVzX3NjcmVlbmVkKQojIyBmaW5kIG91dCB3aGljaCBtb2R1bGVzIHRoZXkgYXJlIGluCmRmX3NjcmVlbmVkX2dlbmVfbW9kdWxlcyA8LSBnZW5lX21vZHVsZV9kZl9zZXhbd2hpY2goZ2VuZV9tb2R1bGVfZGZfc2V4JGlkICVpbiUgZ2VuZXNfc2NyZWVuZWQpLF0KcHJpbnQoInRvdGFsIGdlbmVzIHNjcmVlbmVkIGluIHRoaXMgbW9kdWxlIikKdGFibGUoZGZfc2NyZWVuZWRfZ2VuZV9tb2R1bGVzJG1vZHVsZSkKCiMjIG1ha2UgYSB0YWJsZSB3aXRoIHRoaXMgaW5mbwpwY19zY3JlZW5lZCA8LSBkYXRhLmZyYW1lKGhpdHMgPSB0YWJsZShkZl9oaXRzX2dlbmVfbW9kdWxlcyRtb2R1bGUpLCBzY3JlZW5lZCA9ICB0YWJsZShkZl9zY3JlZW5lZF9nZW5lX21vZHVsZXMkbW9kdWxlKSlbLC0zXQpuYW1lcyhwY19zY3JlZW5lZCkgPC0gYygibW9kdWxlIiwgImhpdHMiLCAic2NyZWVuZWQiKQpwY19zY3JlZW5lZCRwYyA8LSAocGNfc2NyZWVuZWQkaGl0cyAvcGNfc2NyZWVuZWQkc2NyZWVuZWQpKjEwMAoKIyMgdmlldwpwY19zY3JlZW5lZApgYGAKRnVydGhlciBpbnZlc3RpZ2F0aW9uIG9mIHNjcmVlbiBoaXRzCmBgYHtyfQojIyByZW5hbWUgZGYKZGZfc2NyZWVuX2hpdHNfc2VsZWN0ZWQgPC0gYXMuZGF0YS5mcmFtZShzY3JlZW5faGl0c19zZWxlY3RlZCkKZGZfc2NyZWVuX2hpdHNfc2VsZWN0ZWQkJ25ldyBnZW5lIElEJyA8LSBnc3ViKCJfIiwgIi0iLCBkZl9zY3JlZW5faGl0c19zZWxlY3RlZCQnbmV3IGdlbmUgSUQnKQpuYW1lcyhkZl9zY3JlZW5faGl0c19zZWxlY3RlZClbMl0gPC0gImlkIgpkZl9nZW5lX21vZHVsZV9kZl9zZXggPC0gYXMuZGF0YS5mcmFtZShnZW5lX21vZHVsZV9kZl9zZXgpCgojIyBtZXJnZSBkZnMgdG9nZXRoZXIKc2NyZWVuX2hpdHNfbW9kdWxlcyA8LSBtZXJnZShkZl9zY3JlZW5faGl0c19zZWxlY3RlZCwgZGZfZ2VuZV9tb2R1bGVfZGZfc2V4LCBieSA9ICJpZCIpCgojIyB2aWV3CnNjcmVlbl9oaXRzX21vZHVsZXMKYGBgCgpgYGB7cn0KIyMgY2hhbmdlIHRoZSByb3cgb3JkZXIgdG8gbWF0Y2ggdGhlIGhlYXRtYXAgbGF0ZXIKcGNfc2NyZWVuZWQkbW9kdWxlIDwtIGZhY3RvcihwY19zY3JlZW5lZCRtb2R1bGUsIGxldmVscyA9IHJldihjKCIxMCIsICI5IiwgIjE3IiwgIjQiLCAiMiIsICI2IiwgIjEyIiwgIjE0IiwKICAgICAgICAgICAgICAgIjIxIiwgIjciLCAKICAgICAgICAgICAgICAgIjIyIiwgIjIzIiwiMTMiLCIxNiIsICIxOCIsICIxOSIsICIxMSIsICIxNSIsICI1IiwKICAgICAgICAgICAgICAgIjIwIiwgIjgiLCAiMyIsICIxIgogICAgICAgICAgICAgICApKSkKCiBoMSA8LSBnZ3Bsb3QoZGF0YSA9IHBjX3NjcmVlbmVkLCBtYXBwaW5nID0gYWVzKHggPSBtb2R1bGUsIGZpbGw9cGMpKSArCiAgZ2VvbV9iYXIoY29sID0gIiNGRkZGRkYiLCB3aWR0aCA9IDEpKwogICAgICB0aGVtZV92b2lkKCkgKwogICAgdGhlbWUocGFuZWwuc3BhY2luZy54ID0gdW5pdCgxLCAibW0iKSkgKwogICAgc2NhbGVfZmlsbF9jb250aW51b3VzX3NlcXVlbnRpYWwocGFsZXR0ZSA9ICJHcmVlbnMiKSArCiAgY29vcmRfZmxpcCgpCiBsZWdlbmQgPC0gZ2V0X2xlZ2VuZChoMSkKIGgxIDwtIGgxICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIApzY3JlZW5fYW5ub3RhdGlvbiA8LSBwbG90X2dyaWQoaDEsIGxlZ2VuZCwgbnJvdyA9IDEsIHJlbF93aWR0aHMgPSBjKDEwLCAxLjUpKQpzY3JlZW5fYW5ub3RhdGlvbgpgYGAKCmBgYHtyfQpnZ3NhdmUoIi4uL2ltYWdlc190b19leHBvcnQvc2NyZWVuX2Fubm90YXRpb24ucG5nIiwgcGxvdCA9IHNjcmVlbl9hbm5vdGF0aW9uLCBkZXZpY2UgPSAicG5nIiwgcGF0aCA9IE5VTEwsIHNjYWxlID0gMSwgd2lkdGggPSAxMCwgaGVpZ2h0ID0gMTAsIHVuaXRzID0gImNtIiwgZHBpID0gMzAwLCBsaW1pdHNpemUgPSBUUlVFKQpgYGAKCiMjIyBzaWduaWZpY2FuY2UgdGVzdAoKdGVzdCB2aWthc2ggdnMgbXkgZGF0YWZyYW1lCmBgYHtyfQojIyBrYXNpYSdzIHRhYmxlIGZvciBjb21wYXJpc29uCnZpa2FzaCA8LSByZWFkLmRlbGltKCIuLi9idWxrX3JuYS1zZXEvZW5yaWNobWVudC9LYXNpYSBuZXcgY2x1c3RlciBlbnJpY2htZW50IGZvciBWaWthc2gudHh0Iiwgc2VwID0gIlx0IiwgaGVhZGVyID0gVFJVRSkKZGltKHZpa2FzaCkKCiMjIHJlYWQgaW4gc2NyZWVuIGhpdHMKbGlicmFyeSgicmVhZHhsIikKc2NyZWVuX2hpdHMgPC0gcmVhZF9leGNlbCgiLi4vZGF0YS9TY3JlZW4vTW9kdWxlc19DbHVzdGVyc19QaGVub3R5cGVzLnhsc3giKQpkaW0oc2NyZWVuX2hpdHMpCgpjb21iaW5lZCA8LSBtZXJnZShzY3JlZW5faGl0c1t3aGljaChzY3JlZW5faGl0cyRgR2FtIHBoZW5vdHlwZSBzY3JlZW5gID09ICJCb3RoIiB8IHNjcmVlbl9oaXRzJGBHYW0gcGhlbm90eXBlIHNjcmVlbmAgPT0gIkZlbWFsZXMiIHwgc2NyZWVuX2hpdHMkYEdhbSBwaGVub3R5cGUgc2NyZWVuYCA9PSAiTWFsZXMiKSwgXSwgdmlrYXNoWyF2aWthc2gkY29ucy5waGVub3R5cGUgPT0gIk5vbmUiLCBdLCBieS54ID0gIm5ldyBnZW5lIElEIiwgYnkueSA9ICJuZXcuZ2VuZS5JRCIsIGFsbC54ID0gVFJVRSkKZGltKGNvbWJpbmVkKQpgYGAKCnNldCB1cCBkZiBmb3IgcHl0aG9uCmBgYHtyfQojIyByZWFkIGluIG1vZHVsZXMKbW9kdWxlcyA8LSBhcy5kYXRhLmZyYW1lKGdlbmVfbW9kdWxlX2RmX3NleCkKIyMgdGFrZSBjb2xzIG9mIGludGVyZXN0Cm1vZHVsZXMgPC0gbW9kdWxlc1sgLGMoImlkIiwgIm1vZHVsZSIpLCBkcm9wID0gRkFMU0VdCiMjIGNoYW5nZSB0aGUgdW5kZXJzY29yZSB0byBhIGRhc2gKbW9kdWxlcyRpZCA8LSBnc3ViKCItIiwgIl8iLCBtb2R1bGVzJGlkKQoKIyMgcmVhZCBpbiBwaGVub3R5cGVzIGZyb20gc2NyZWVuCnNjcmVlbl9oaXRzIDwtIHJlYWRfZXhjZWwoIi4uL2RhdGEvU2NyZWVuL01vZHVsZXNfQ2x1c3RlcnNfUGhlbm90eXBlcy54bHN4IikKc2NyZWVuX2hpdHNfdG9fbWVyZ2UgPC0gYXMuZGF0YS5mcmFtZShzY3JlZW5faGl0cykKc2NyZWVuX2hpdHNfdG9fbWVyZ2UgPC0gc2NyZWVuX2hpdHNfdG9fbWVyZ2VbICxjKCJuZXcgZ2VuZSBJRCIsICJHYW0gcGhlbm90eXBlIHNjcmVlbiIpXQoKIyMgbWVyZ2UgdG9nZXJ0aGVyIHRvIGNyZWF0ZSBmaW5hbCBkZgppbnB1dF9mb3JfZW5yaWNobWVudCA8LSBtZXJnZShtb2R1bGVzLCBzY3JlZW5faGl0c190b19tZXJnZSwgYnkueCA9ICJpZCIsIGJ5LnkgPSAibmV3IGdlbmUgSUQiLCBhbGwueCA9IFRSVUUpCm5hbWVzKGlucHV0X2Zvcl9lbnJpY2htZW50KSA8LSBjKCJuZXcgZ2VuZSBJRCIsICJDbHVzdGVyIiwgImNvbnMgcGhlbm90eXBlIikKIyMgbW9kaWZ5IHRvIG1hdGNoIHZpa2FzaCB0YWJsZQojIyByZW1vdmUgTkEgdmFsdWVzCmlucHV0X2Zvcl9lbnJpY2htZW50IDwtIGlucHV0X2Zvcl9lbnJpY2htZW50WyFpcy5uYShpbnB1dF9mb3JfZW5yaWNobWVudCRgY29ucyBwaGVub3R5cGVgKSwgXQojIyBjaGFuZ2UgdGhlIG1hbGVub3QgZW5vdWdoIHBvd2VyIHRvIG5vbmUgCmlucHV0X2Zvcl9lbnJpY2htZW50W2lucHV0X2Zvcl9lbnJpY2htZW50JGBjb25zIHBoZW5vdHlwZWAgPT0gIm1hbGUgbm90IGVub3VnaCBwb3dlciIsIF0kYGNvbnMgcGhlbm90eXBlYCA8LSAiTm9uZSIKIyNjbGVhbiB1cApybShzY3JlZW5faGl0c190b19tZXJnZSkKYGBgCgpkbyBzaWduaWZpY2FuY2UgdGVzdCBpbiBweXRob24gLSB1cGRhdGUgdGhpcyB0byBSIGF0IGEgbGF0ZXIgZGF0ZSAtIFZpa2FzaCB3cm90ZSB0aGlzIGZvciBlbnJpY2htZW50IG9mIHNjcmVlbiBoaXRzIGluIGJ1bGsgZGF0YQpgYGB7cHl0aG9ufQppbXBvcnQgb3MKaW1wb3J0IHBhbmRhcyBhcyBwZApmcm9tIHNjaXB5LnN0YXRzIGltcG9ydCBoeXBlcmdlb20gIyMgZm9yIGh5cGVyZ2VvbXRyaWMgZGlzdHJpYnV0aW9ucwppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHN0YXRzbW9kZWxzLnN0YXRzLm11bHRpdGVzdCBhcyBtdGVzdCAjIyBmb3IgbXVsdGlwbGUgaHlwb3RoZXNpcyB0ZXN0aW5nCmN1cnJlbnRfZm9sZGVyID0gb3MuZ2V0Y3dkKCkgIyMgY3VycmVudCBkaXJlY3RvcnkgcGF0aAoKZGVmIGFwcGx5X2VucmljaCh0bXAsc2V4X2dlbmVfbGlzdCxvdXRmaWxlKToKICAgICMjIGdyb3VwYnkgYWxvbmcgUGhlbm90eWVwZXMKICAgICNGaXJzdCBhcmd1bW5ldDogdGVtcGVyb3J5IGRhdGFmcmFtZQogICAgI1NlY29uZCBhcmd1bWVudDogbGlzdCBvZiBtYWxlLXNwZWNpZmljIGdlbmVzCiAgICAjVGhpcmQgYXJndW1uZXQ6IGZpbGUgd2hlcmUgd2Ugc3RvcmUgZW5yaWNobWVudCBhbmFseXNpcwoKCiAgICBNPWxlbih0bXAuaW5kZXgpICMgdG90YWwgbnVtYmVyIG9mIGdlbmVzCiAgICBwdmFscz1bXSAjIGxpc3QgZm9yIHN0b3JpbmcgcHZhbHVlcwogICAgbl9saXN0PVtdICMgc3RvcmUgbnVtYmVyIG9mIGdlbmVzIGluIGNsdXN0ZXIKICAgIHhfbGlzdD1bXSAjIyBzdG9yZSBudW1iZXIgb2Ygc2V4LXNwZWNpZmljIGdlbmVzIGluIGNsdXN0ZXIKICAgIGdlbmVzPVtdICMjIHdlIHN0b3JlIGdlbmVzIChzZXgtc3BlY2lmYyBnZW5lIGlkcykKICAgIGNsdXN0ZXJzPVtdICMjIHN0b3JlIGNsdXN0ZXIgbnVtYmVyCgogICAgIyMgZ3JvdXAgY2x1c3RlcnMKICAgIGZvciBrLHYgaW4gdG1wLmdyb3VwYnkoWyAnQ2x1c3RlciddKS5pbmRpY2VzLml0ZW1zKCk6CiAgICAgICAgIyMgcHJpbnQoaywgbGVuKHYpKQogICAgICAgIGNsdXN0ZXJzLmFwcGVuZChrKSAjIyBzdG9yZSBjbHVzdGVyIG51bWJlcgogICAgICAgIGNsdXN0X2dlbmVzPXNldCh0bXAuaW5kZXhbdl0udG9fbGlzdCgpKSAjIyBnZW5lcyBpbiB0aGUgY2x1c3RlcgoKICAgICAgICBzZXhfZ2VuZV9pbl9jbHVzdD0gc2V0KHNleF9nZW5lX2xpc3QpJiBjbHVzdF9nZW5lcyAjIyBob3cgbWFueSBzZXgtc3BlY2lmaWMgZ2VuZXMgYXJlIGZvdW5kIGluIGNsdXN0ZXIKICAgICAgICAjIyBob3cgbWFueSBhcmUgaW4gcGhlbm95cGUKICAgICAgICBNPU0gIyMgdG90YWwgZ2VuZXMKICAgICAgICBOPWxlbihzZXhfZ2VuZV9saXN0KSAjIyBzZXgtc3BlY2lmaWMgZ2VuZXMKICAgICAgICBuPWxlbihjbHVzdF9nZW5lcykgIyMgdG90YWwgbnVtYmVyIG9mIGNsdXN0ZXIgZ2VuZXMKCiAgICAgICAgcnYgPSBoeXBlcmdlb20oTSwgbiwgTikgIyMgaHlwZXJnZW9tZXRyaWMgIGRpc3RyaWJ1dGlvbnMKICAgICAgICB4PWxlbihzZXhfZ2VuZV9pbl9jbHVzdCkgIyMgbnVtYmVyIG9mIHNleC1zcGVjaWZpYyBnZW5lcyBpbiBjbHVzdGVyCgogICAgICAgICMjIGZvciBwLXZhbHVlIHdlIG5lZWQgdG8gZ2V0IHN1bW1hdGlvbiBvZiBhbGwgcHJvYmFsaXRpZXMgZ3JlYXRlciB0aGFuID4geAogICAgICAgIHB2YWw9IDEtcnYuY2RmKHgpCiAgICAgICAgcHZhbHMuYXBwZW5kKHB2YWwpCiAgICAgICAgbl9saXN0LmFwcGVuZChuKQogICAgICAgIHhfbGlzdC5hcHBlbmQoeCkKICAgICAgICBnZW5lcy5hcHBlbmQoJywgJy5qb2luKHNleF9nZW5lX2luX2NsdXN0KSkKICAgIGZkcj1tdGVzdC5tdWx0aXBsZXRlc3RzKHB2YWxzLCBhbHBoYT0wLjA1LCBtZXRob2Q9J2Zkcl9iaCcpCiAgICBlbnJpY2g9eydDbHVzdGVyJzpjbHVzdGVycywgJ3B2YWxzJzpwdmFscywnY2x1c3Rlcl9zaXplJzpuX2xpc3QsJyMgb2YgZ2VuZXMgZm91bmQgaW4gY2x1c3Rlcic6eF9saXN0LCdnZW5lcyc6Z2VuZXMsJ0ZEUic6ZmRyWzFdfQoKICAgICMjIGNyZWF0ZSBlbnJpY2htZW50IHRhYmxlCiAgICBlbnJpY2hfZGY9cGQuRGF0YUZyYW1lLmZyb21fZGljdChlbnJpY2gpCiAgICBlbnJpY2hfc29yZXRlZD1lbnJpY2hfZGYuc29ydF92YWx1ZXMoYnk9WydwdmFscyddLGFzY2VuZGluZz1UcnVlKQoKICAgIGVucmljaF9zb3JldGVkLnRvX2NzdihvdXRmaWxlLHNlcD0nXHQnLGluZGV4PU5vbmUpCiAgICAKCgoKZGVmIGVucmljaF9jbHVzdGVyX2ZpbmFsKCk6CiAgICAnJycgQ2FsY3VsYXRlIHAtdmFsdWUgYW5kIEZEUiB1c2luZyBlbnJpY2htZW50IGFuYWx5c2lzLiBXZSB1c2VkIGh5cGVyZ2VvbWV0cmljIHRlc3QnJycKCiAgICAjIyMgaW5wdXQgZmlsZSAocHJvdmlkZWQgYnkgT2xpdmVyKTogdGhpcyBmaWxlIGhhcyAzIGNvbHVtbnMKICAgICMgRmlyc3QgY29sdW1uOiAnbmV3IGdlbmUgSUQnCiAgICAjIFNlY29uZCBjb2x1bW46ICdDbHVzdGVyJwogICAgIyBUaGlyZCBjb2x1bW46ICdjb25zIHBoZW5vdHlwZScKICAgICMjCiAgICAjaW5wdXRfZmlsZT1jdXJyZW50X2ZvbGRlcisnL0thc2lhIG5ldyBjbHVzdGVyIGVucmljaG1lbnQgZm9yIFZpa2FzaC50eHQnCiAgICAjZGY9cGQucmVhZF9jc3YoaW5wdXRfZmlsZSxzZXA9J1x0JykjIyBpbnB1dCBmaWxlIGFzIGEgZGF0YWZyYW1lCiAgICBkZiA9IHIuaW5wdXRfZm9yX2VucmljaG1lbnQKICAgIGRmCiAgICAjZGY9ZGYuZmlsbG5hKCdOQScpICMjIG5hbiBpcyBmaWxsIHdpdGggTkEKICAgICMgZGZbJ2NvbnNlbnN1cyBwaGVub3R5cGUnXT1kZlsnY29uc2Vuc3VzIHBoZW5vdHlwZSddLnN0ci5yZXBsYWNlKCdOb25lJywnTkEnKQogICAgdG1wPWRmLmNvcHkoKSAjIyB0aGlzIGlzIHRoZSB0ZW1wZXJvcnkgZGF0YSBmcmFtZSBzYW1lIGFzIGEgb3JpZ2luYWwgZGF0YWZyYW1lCiAgICB0bXAuc2V0X2luZGV4KCduZXcgZ2VuZSBJRCcsaW5wbGFjZT1UcnVlKSAjIyBtYWtlIGdlbmUgaWRzIGFzIGluZGV4CgogICAgIyMgc2VwcmF0ZSB0aGUgZGF0YWZyYW1lcyBhY2NvcmRpbmcgc2V4LXNwZWNpZmljIHBoZW5vdHlwZXMKICAgIG1hbGVfZGY9dG1wWyh0bXBbJ2NvbnMgcGhlbm90eXBlJ109PSAnTWFsZXMnKV0KICAgIGZlbWFsZV9kZj10bXBbKHRtcFsnY29ucyBwaGVub3R5cGUnXT09ICdGZW1hbGVzJyldCiAgICBib3RoX2RmPXRtcFsodG1wWydjb25zIHBoZW5vdHlwZSddPT0gJ0JvdGgnKV0KCgogICAgIyMgZW5yaWNobWVudCBhbmFseXNpcyBmb3IgbWFsZQogICAgb3V0ZmlsZT1jdXJyZW50X2ZvbGRlcisnLy4uL2RhdGFfdG9fZXhwb3J0L21vZHVsZV9lbnJpY2htZW50X3Jlc3VsdHMvTW9kdWxlX2VucmljaG1lbnRfZ2FtZXRvY3l0ZV9tYWxlLnR4dCcKICAgICNGaXJzdCBhcmd1bW5ldDogdGVtcGVyb3J5IGRhdGFmcmFtZQogICAgI1NlY29uZCBhcmd1bWVudDogbGlzdCBvZiBtYWxlLXNwZWNpZmljIGdlbmVzCiAgICAjVGhpcmQgYXJndW1uZXQ6IGZpbGUgd2hlcmUgd2Ugc3RvcmUgZW5yaWNobWVudCBhbmFseXNpcwogICAgYXBwbHlfZW5yaWNoKHRtcCxtYWxlX2RmLmluZGV4LnRvX2xpc3QoKSxvdXRmaWxlKQoKICAgICMjIGVucmljaG1lbnQgYW5hbHlzaXMgZm9yIGZlbWFsZTogc2ltaWxhciBhcyBtYWxlCgogICAgb3V0ZmlsZT1jdXJyZW50X2ZvbGRlcisnLy4uL2RhdGFfdG9fZXhwb3J0L21vZHVsZV9lbnJpY2htZW50X3Jlc3VsdHMvTW9kdWxlX2VucmljaG1lbnRfZ2FtZXRvY3l0ZV9mZW1hbGUudHh0JwogICAgYXBwbHlfZW5yaWNoKHRtcCAsZmVtYWxlX2RmLmluZGV4LnRvX2xpc3QoKSxvdXRmaWxlKQoKICAgICMjIGVucmljaG1lbnQgYW5hbHlzaXMgZm9yIGJvdGggc2V4ZXM6IDogc2ltaWxhciBhcyBtYWxlCgogICAgb3V0ZmlsZT1jdXJyZW50X2ZvbGRlcisnLy4uL2RhdGFfdG9fZXhwb3J0L21vZHVsZV9lbnJpY2htZW50X3Jlc3VsdHMvTW9kdWxlX2VucmljaG1lbnRfZ2FtZXRvY3l0ZV9ib3RoLnR4dCcKICAgIGFwcGx5X2VucmljaCh0bXAsYm90aF9kZi5pbmRleC50b19saXN0KCksb3V0ZmlsZSkKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKCiAgIGVucmljaF9jbHVzdGVyX2ZpbmFsKCkKYGBgCgoKCgojIyMjIERPWkktcmVndWxhdGVkIGdlbmVzCgpGaW5kIG91dCBob3cgbWFueSBvZiB0aGUgZ2VuZXMgaW4gZWFjaCBtb2R1bGUgaGFzIGEgRE9aSS1yZWd1bGF0ZWQgZ2VuZQoKT0xEIExJU1QgRlJPTSBLRU5UIFBBUEVSCmBgYHtyfQojRE9aSV9yZWd1bGF0ZWRfZ2VuZXMgPC0gcmVhZC5jc3YoZmlsZSA9ICIuLi9kYXRhL1JlZmVyZW5jZS9ET1pJX3JlZ3VsYXRlZF9nZW5lcy5jc3YiLCBoZWFkZXIgPSBUUlVFKQoKIyMgZXh0cmFjdCBnZW5lIElEcwojZG96aV9nZW5lcyA8LSBET1pJX3JlZ3VsYXRlZF9nZW5lc1tET1pJX3JlZ3VsYXRlZF9nZW5lcyRET1pJX3JlZ3VsYXRlZC4gPT0gIllFUyIsIF0kR2VuZV9JRF9QQgojIyBjaGFuZ2UgdGhlIHVuZGVyc2NvcmUgdG8gYSBkYXNoCiNkb3ppX2dlbmVzIDwtIGdzdWIoIl8iLCAiLSIsIGRvemlfZ2VuZXMpCgojIyBmaW5kIG91dCB3aGljaCBtb2R1bGVzIHRoZXkgYXJlIGluCiNkZl9kb3ppX2dlbmVfbW9kdWxlcyA8LSBnZW5lX21vZHVsZV9kZl9zZXhbd2hpY2goZ2VuZV9tb2R1bGVfZGZfc2V4JGlkICVpbiUgZG96aV9nZW5lcyksXQojcHJpbnQoImRvemkgZ2VuZXMgYnkgbW9kdWxlIikKI3RhYmxlKGRmX2RvemlfZ2VuZV9tb2R1bGVzJG1vZHVsZSkKYGBgCgpgYGB7cn0KIyMgRE9aSQpndWVycmVpcm8gPC0gcmVhZC5jc3YoZmlsZSA9ICIuLi9kYXRhL1JlZmVyZW5jZS9yYXdfZGF0YV9hbmRfbWVyZ2luZ19zY3JpcHRzL0d1ZXJyZWlyb18yMDE0LmNzdiIsIGhlYWRlciA9IFRSVUUpCmd1ZXJyZWlybyA8LSBndWVycmVpcm9bLCBjKDEsIDksMTAsMTEpXQpuYW1lcyhndWVycmVpcm8pIDwtIGMoImlkIiwgIkNJVEgiLCAiRE9aSSIsICJDSVRIX2FuZF9ET1pJIikKIyMgY2hhbmdlIG9sZCBnZW5lIElEcwpvbGRfaWRzIDwtIHJlYWQuY3N2KGZpbGUgPSAiLi4vZGF0YS9SZWZlcmVuY2UvcmF3X2RhdGFfYW5kX21lcmdpbmdfc2NyaXB0cy9OZXdfdG9fb2xkX2dlbmVfaWRzLmNzdiIsIGhlYWRlciA9IEZBTFNFKQojIyBHZXQgb25seSAxIHRvIDEgY29udmVyc2lvbnMKb2xkX2lkcyA8LSBvbGRfaWRzW29sZF9pZHMkVjMgPT0gIiIsXQpvbGRfaWRzIDwtIG9sZF9pZHNbICwgYygxLDIpXQpuYW1lcyhvbGRfaWRzKSA8LSBjKCJuZXciLCAib2xkIikKZ3VlcnJlaXJvX25ldyA8LSBtZXJnZShndWVycmVpcm8sIG9sZF9pZHMsIGJ5LnggPSAiaWQiLCBieS55ID0gIm9sZCIsIGFsbC54ID0gVFJVRSkKZ3VlcnJlaXJvX25ldyA8LSBndWVycmVpcm9fbmV3Wy13aGljaChpcy5uYShndWVycmVpcm9fbmV3JG5ldykpLCBdCiMjIGNoYW5nZSB0aGUgdW5kZXJzY29yZSB0byBhIGRhc2gKZ3VlcnJlaXJvX25ldyRuZXcgPC0gZ3N1YigiXyIsICItIiwgZ3VlcnJlaXJvX25ldyRuZXcpCiMjIGlmIHlvdSB3YW50IG9ubHkgZGlzY292ZXJlZCBpbiBib3RoCiNndWVycmVpcm9faGl0cyA8LSBndWVycmVpcm9fbmV3W2d1ZXJyZWlyb19uZXckQ0lUSF9hbmRfRE9aSSA9PSAyLCBdCiMjIHRvIGdldCBhbGwgZ2VuZXMgd2l0aCBhIHB1bGxsZG93bgpndWVycmVpcm9faGl0cyA8LSBndWVycmVpcm9fbmV3WyFndWVycmVpcm9fbmV3JENJVEhfYW5kX0RPWkkgPT0gMCwgXQoKZG96aV9nZW5lcyA8LSBndWVycmVpcm9faGl0cyRuZXcKIyMgZmluZCBvdXQgd2hpY2ggbW9kdWxlcyB0aGV5IGFyZSBpbgpkZl9kb3ppX2dlbmVfbW9kdWxlcyA8LSBnZW5lX21vZHVsZV9kZl9zZXhbd2hpY2goZ2VuZV9tb2R1bGVfZGZfc2V4JGlkICVpbiUgZG96aV9nZW5lcyksXQpwcmludCgiZG96aSBnZW5lcyBieSBtb2R1bGUiKQp0YWJsZShkZl9kb3ppX2dlbmVfbW9kdWxlcyRtb2R1bGUpCmBgYAoKCmdldCBhcyBhIHBlcmNlbnRhZ2UKYGBge3J9CiMjIG1ha2UgYSB0YWJsZSB3aXRoIHRoZSB0b3RhbCBudW1iZXIgb2YgZ2VuZXMgaW4gZWFjaCBtb2R1bGUKdGVzdCA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKGdlbmVfbW9kdWxlX2RmX3NleCRtb2R1bGUpLCBzdHJpbmdzQXNGYWN0b3JzPUZBTFNFKQojIyByZW9yZGVyIHJvd3MgYnkgbW9kdWxlIG51bWJlcgp0ZXN0IDwtIHRlc3Rbb3JkZXIoYXMubnVtZXJpYyh0ZXN0JFZhcjEpKSxdCiMjIGNvbWJpbmUgdGhlIHRvdGFsIG51bWJlciBvZiBkb3ppIGdlbmVzIHBlciBtb2R1bGUgd2l0aCB0aGUgdG90YWwgbnVtYmVyIG9mIGdlbmVzIHBlciBtb2R1bGUKcGNfc2NyZWVuZWQgPC0gZGF0YS5mcmFtZShkb3ppID0gdGFibGUoZGZfZG96aV9nZW5lX21vZHVsZXMkbW9kdWxlKSwgdG90YWwgPSAgdGVzdClbLC0zXQpuYW1lcyhwY19zY3JlZW5lZCkgPC0gYygibW9kdWxlIiwgImRvemlfZ2VuZXNfcGVyX21vZHVsZSIsICJ0b3RhbF9nZW5lc19wZXJfbW9kdWxlIikKIyMgY2FsY3VsYXRlIHBlcmNlbnRhZ2UKcGNfc2NyZWVuZWQkcGMgPC0gKHBjX3NjcmVlbmVkJGRvemlfZ2VuZXNfcGVyX21vZHVsZSAvcGNfc2NyZWVuZWQkdG90YWxfZ2VuZXNfcGVyX21vZHVsZSkqMTAwCgojIyB2aWV3CnBjX3NjcmVlbmVkCmBgYAoKYGBge3J9CiMjIGNoYW5nZSByb3cgb3JkZXI6CnJvdy5vcmRlciA8LSBjKCIxMCIsICI5IiwgIjE3IiwgIjQiLCAiMiIsICI2IiwgIjEyIiwgIjE0IiwKICAgICAgICAgICAgICAgIjIxIiwgIjciLCAKICAgICAgICAgICAgICAgIjIyIiwgIjIzIiwiMTMiLCIxNiIsICIxOCIsICIxOSIsICIxMSIsICIxNSIsICI1IiwKICAgICAgICAgICAgICAgIjIwIiwgIjgiLCAiMyIsICIxIgogICAgICAgICAgICAgICApCiMjIGNoYW5nZSB0aGUgbW9kdWxlIHRvIGEgc3RyaW5nCiNwY19zY3JlZW5lZCRtb2R1bGUgPC0gYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIocGNfc2NyZWVuZWQkbW9kdWxlKSkKI3BjX3NjcmVlbmVkJG1vZHVsZSA8LSBhcy5mYWN0b3IocGNfc2NyZWVuZWQkbW9kdWxlKQojcGNfc2NyZWVuZWQgPC0gcGNfc2NyZWVuZWRbbWF0Y2gocm93Lm9yZGVyLCBwY19zY3JlZW5lZCRtb2R1bGUpLCBdCnBjX3NjcmVlbmVkJG1vZHVsZSA8LSBmYWN0b3IocGNfc2NyZWVuZWQkbW9kdWxlLCBsZXZlbHMgPSByZXYoYygiMTAiLCAiOSIsICIxNyIsICI0IiwgIjIiLCAiNiIsICIxMiIsICIxNCIsCiAgICAgICAgICAgICAgICIyMSIsICI3IiwgCiAgICAgICAgICAgICAgICIyMiIsICIyMyIsIjEzIiwiMTYiLCAiMTgiLCAiMTkiLCAiMTEiLCAiMTUiLCAiNSIsCiAgICAgICAgICAgICAgICIyMCIsICI4IiwgIjMiLCAiMSIKICAgICAgICAgICAgICAgKSkpCgogaDEgPC0gZ2dwbG90KGRhdGEgPSBwY19zY3JlZW5lZCwgbWFwcGluZyA9IGFlcyh4ID0gbW9kdWxlLCBmaWxsPXBjKSkgKwogIGdlb21fYmFyKGNvbCA9ICIjRkZGRkZGIiwgd2lkdGggPSAxKSsKICAgICAgdGhlbWVfdm9pZCgpICsKICAgIHRoZW1lKHBhbmVsLnNwYWNpbmcueCA9IHVuaXQoMSwgIm1tIikpICsKICAgIHNjYWxlX2ZpbGxfY29udGludW91c19zZXF1ZW50aWFsKHBhbGV0dGUgPSAiQmx1ZXMiKSArCiAgY29vcmRfZmxpcCgpCiBsZWdlbmQgPC0gZ2V0X2xlZ2VuZChoMSkKIGgxIDwtIGgxICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIApkb3ppX2Fubm90YXRpb24gPC0gcGxvdF9ncmlkKGgxLCBsZWdlbmQsIG5yb3cgPSAxLCByZWxfd2lkdGhzID0gYygxMCwgMS41KSkKZG96aV9hbm5vdGF0aW9uCmBgYAoKYGBge3J9Cmdnc2F2ZSgiLi4vaW1hZ2VzX3RvX2V4cG9ydC9kb3ppX2Fubm90YXRpb24ucG5nIiwgcGxvdCA9IGRvemlfYW5ub3RhdGlvbiwgZGV2aWNlID0gInBuZyIsIHBhdGggPSBOVUxMLCBzY2FsZSA9IDEsIHdpZHRoID0gMTAsIGhlaWdodCA9IDEwLCB1bml0cyA9ICJjbSIsIGRwaSA9IDMwMCwgbGltaXRzaXplID0gVFJVRSkKYGBgCgpzZXQgdXAgZGYgZm9yIHB5dGhvbgpgYGB7cn0KIyMgcmVhZCBpbiBtb2R1bGVzCm1vZHVsZXMgPC0gYXMuZGF0YS5mcmFtZShnZW5lX21vZHVsZV9kZl9zZXgpCiMjIHRha2UgY29scyBvZiBpbnRlcmVzdAptb2R1bGVzIDwtIG1vZHVsZXNbICxjKCJpZCIsICJtb2R1bGUiKSwgZHJvcCA9IEZBTFNFXQojIyBjaGFuZ2UgdGhlIHVuZGVyc2NvcmUgdG8gYSBkYXNoCm1vZHVsZXMkaWQgPC0gZ3N1YigiLSIsICJfIiwgbW9kdWxlcyRpZCkKCiMjIHJlYWQgaW4gcGhlbm90eXBlcyBmcm9tIHNjcmVlbgpzY3JlZW5faGl0c190b19tZXJnZSA8LSBhcy5kYXRhLmZyYW1lKGd1ZXJyZWlyb19oaXRzKQojIyBjcmVhdGUgbmV3IGNvbApzY3JlZW5faGl0c190b19tZXJnZSRwaGVub3R5cGUgPC0gTkEKc2NyZWVuX2hpdHNfdG9fbWVyZ2Vbc2NyZWVuX2hpdHNfdG9fbWVyZ2UkQ0lUSCA9PSAxLCBdJHBoZW5vdHlwZSA8LSAiQ0lUSCIKc2NyZWVuX2hpdHNfdG9fbWVyZ2Vbc2NyZWVuX2hpdHNfdG9fbWVyZ2UkRE9aST09IDEsIF0kcGhlbm90eXBlIDwtICJET1pJIgpzY3JlZW5faGl0c190b19tZXJnZVtzY3JlZW5faGl0c190b19tZXJnZSRDSVRIX2FuZF9ET1pJID09IDIsIF0kcGhlbm90eXBlIDwtICJDSVRIX2FuZF9ET1pJIgpzY3JlZW5faGl0c190b19tZXJnZSA8LSBzY3JlZW5faGl0c190b19tZXJnZVsgLGMoIm5ldyIsICJwaGVub3R5cGUiKV0KIyMgY2hhbmdlIHRoZSB1bmRlcnNjb3JlIHRvIGEgZGFzaApzY3JlZW5faGl0c190b19tZXJnZSRuZXcgPC0gZ3N1YigiLSIsICJfIiwgc2NyZWVuX2hpdHNfdG9fbWVyZ2UkbmV3KQoKIyMgbWVyZ2UgdG9nZXJ0aGVyIHRvIGNyZWF0ZSBmaW5hbCBkZgppbnB1dF9mb3JfZW5yaWNobWVudCA8LSBtZXJnZShtb2R1bGVzLCBzY3JlZW5faGl0c190b19tZXJnZSwgYnkueCA9ICJpZCIsIGJ5LnkgPSAibmV3IiwgYWxsLnggPSBUUlVFKQpuYW1lcyhpbnB1dF9mb3JfZW5yaWNobWVudCkgPC0gYygibmV3IGdlbmUgSUQiLCAiQ2x1c3RlciIsICJjb25zIHBoZW5vdHlwZSIpCiMjIG1vZGlmeSB0byBtYXRjaCB2aWthc2ggdGFibGUKIyMgcmVtb3ZlIE5BIHZhbHVlcwppbnB1dF9mb3JfZW5yaWNobWVudCA8LSBpbnB1dF9mb3JfZW5yaWNobWVudFshaXMubmEoaW5wdXRfZm9yX2VucmljaG1lbnQkYGNvbnMgcGhlbm90eXBlYCksIF0KIyNjbGVhbiB1cApybShzY3JlZW5faGl0c190b19tZXJnZSkKYGBgCgpkbyBzaWduaWZpY2FuY2UgdGVzdCBpbiBweXRob24gLSB1cGRhdGUgdGhpcyB0byBSIGF0IGEgbGF0ZXIgZGF0ZSAtIFZpa2FzaCB3cm90ZSB0aGlzIGZvciBlbnJpY2htZW50IG9mIHNjcmVlbiBoaXRzIGluIGJ1bGsgZGF0YQpgYGB7cHl0aG9ufQppbXBvcnQgb3MKaW1wb3J0IHBhbmRhcyBhcyBwZApmcm9tIHNjaXB5LnN0YXRzIGltcG9ydCBoeXBlcmdlb20gIyMgZm9yIGh5cGVyZ2VvbXRyaWMgZGlzdHJpYnV0aW9ucwppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHN0YXRzbW9kZWxzLnN0YXRzLm11bHRpdGVzdCBhcyBtdGVzdCAjIyBmb3IgbXVsdGlwbGUgaHlwb3RoZXNpcyB0ZXN0aW5nCmN1cnJlbnRfZm9sZGVyID0gb3MuZ2V0Y3dkKCkgIyMgY3VycmVudCBkaXJlY3RvcnkgcGF0aAoKZGVmIGFwcGx5X2VucmljaCh0bXAsc2V4X2dlbmVfbGlzdCxvdXRmaWxlKToKICAgICMjIGdyb3VwYnkgYWxvbmcgUGhlbm90eWVwZXMKICAgICNGaXJzdCBhcmd1bW5ldDogdGVtcGVyb3J5IGRhdGFmcmFtZQogICAgI1NlY29uZCBhcmd1bWVudDogbGlzdCBvZiBtYWxlLXNwZWNpZmljIGdlbmVzCiAgICAjVGhpcmQgYXJndW1uZXQ6IGZpbGUgd2hlcmUgd2Ugc3RvcmUgZW5yaWNobWVudCBhbmFseXNpcwoKCiAgICBNPWxlbih0bXAuaW5kZXgpICMgdG90YWwgbnVtYmVyIG9mIGdlbmVzCiAgICBwdmFscz1bXSAjIGxpc3QgZm9yIHN0b3JpbmcgcHZhbHVlcwogICAgbl9saXN0PVtdICMgc3RvcmUgbnVtYmVyIG9mIGdlbmVzIGluIGNsdXN0ZXIKICAgIHhfbGlzdD1bXSAjIyBzdG9yZSBudW1iZXIgb2Ygc2V4LXNwZWNpZmljIGdlbmVzIGluIGNsdXN0ZXIKICAgIGdlbmVzPVtdICMjIHdlIHN0b3JlIGdlbmVzIChzZXgtc3BlY2lmYyBnZW5lIGlkcykKICAgIGNsdXN0ZXJzPVtdICMjIHN0b3JlIGNsdXN0ZXIgbnVtYmVyCgogICAgIyMgZ3JvdXAgY2x1c3RlcnMKICAgIGZvciBrLHYgaW4gdG1wLmdyb3VwYnkoWyAnQ2x1c3RlciddKS5pbmRpY2VzLml0ZW1zKCk6CiAgICAgICAgIyMgcHJpbnQoaywgbGVuKHYpKQogICAgICAgIGNsdXN0ZXJzLmFwcGVuZChrKSAjIyBzdG9yZSBjbHVzdGVyIG51bWJlcgogICAgICAgIGNsdXN0X2dlbmVzPXNldCh0bXAuaW5kZXhbdl0udG9fbGlzdCgpKSAjIyBnZW5lcyBpbiB0aGUgY2x1c3RlcgoKICAgICAgICBzZXhfZ2VuZV9pbl9jbHVzdD0gc2V0KHNleF9nZW5lX2xpc3QpJiBjbHVzdF9nZW5lcyAjIyBob3cgbWFueSBzZXgtc3BlY2lmaWMgZ2VuZXMgYXJlIGZvdW5kIGluIGNsdXN0ZXIKICAgICAgICAjIyBob3cgbWFueSBhcmUgaW4gcGhlbm95cGUKICAgICAgICBNPU0gIyMgdG90YWwgZ2VuZXMKICAgICAgICBOPWxlbihzZXhfZ2VuZV9saXN0KSAjIyBzZXgtc3BlY2lmaWMgZ2VuZXMKICAgICAgICBuPWxlbihjbHVzdF9nZW5lcykgIyMgdG90YWwgbnVtYmVyIG9mIGNsdXN0ZXIgZ2VuZXMKCiAgICAgICAgcnYgPSBoeXBlcmdlb20oTSwgbiwgTikgIyMgaHlwZXJnZW9tZXRyaWMgIGRpc3RyaWJ1dGlvbnMKICAgICAgICB4PWxlbihzZXhfZ2VuZV9pbl9jbHVzdCkgIyMgbnVtYmVyIG9mIHNleC1zcGVjaWZpYyBnZW5lcyBpbiBjbHVzdGVyCgogICAgICAgICMjIGZvciBwLXZhbHVlIHdlIG5lZWQgdG8gZ2V0IHN1bW1hdGlvbiBvZiBhbGwgcHJvYmFsaXRpZXMgZ3JlYXRlciB0aGFuID4geAogICAgICAgIHB2YWw9IDEtcnYuY2RmKHgpCiAgICAgICAgcHZhbHMuYXBwZW5kKHB2YWwpCiAgICAgICAgbl9saXN0LmFwcGVuZChuKQogICAgICAgIHhfbGlzdC5hcHBlbmQoeCkKICAgICAgICBnZW5lcy5hcHBlbmQoJywgJy5qb2luKHNleF9nZW5lX2luX2NsdXN0KSkKICAgIGZkcj1tdGVzdC5tdWx0aXBsZXRlc3RzKHB2YWxzLCBhbHBoYT0wLjA1LCBtZXRob2Q9J2Zkcl9iaCcpCiAgICBlbnJpY2g9eydDbHVzdGVyJzpjbHVzdGVycywgJ3B2YWxzJzpwdmFscywnY2x1c3Rlcl9zaXplJzpuX2xpc3QsJyMgb2YgZ2VuZXMgZm91bmQgaW4gY2x1c3Rlcic6eF9saXN0LCdnZW5lcyc6Z2VuZXMsJ0ZEUic6ZmRyWzFdfQoKICAgICMjIGNyZWF0ZSBlbnJpY2htZW50IHRhYmxlCiAgICBlbnJpY2hfZGY9cGQuRGF0YUZyYW1lLmZyb21fZGljdChlbnJpY2gpCiAgICBlbnJpY2hfc29yZXRlZD1lbnJpY2hfZGYuc29ydF92YWx1ZXMoYnk9WydwdmFscyddLGFzY2VuZGluZz1UcnVlKQoKICAgIGVucmljaF9zb3JldGVkLnRvX2NzdihvdXRmaWxlLHNlcD0nXHQnLGluZGV4PU5vbmUpCiAgICAKCgoKZGVmIGVucmljaF9jbHVzdGVyX2ZpbmFsKCk6CiAgICAnJycgQ2FsY3VsYXRlIHAtdmFsdWUgYW5kIEZEUiB1c2luZyBlbnJpY2htZW50IGFuYWx5c2lzLiBXZSB1c2VkIGh5cGVyZ2VvbWV0cmljIHRlc3QnJycKCiAgICAjIyMgaW5wdXQgZmlsZSAocHJvdmlkZWQgYnkgT2xpdmVyKTogdGhpcyBmaWxlIGhhcyAzIGNvbHVtbnMKICAgICMgRmlyc3QgY29sdW1uOiAnbmV3IGdlbmUgSUQnCiAgICAjIFNlY29uZCBjb2x1bW46ICdDbHVzdGVyJwogICAgIyBUaGlyZCBjb2x1bW46ICdjb25zIHBoZW5vdHlwZScKICAgICMjCiAgICAjaW5wdXRfZmlsZT1jdXJyZW50X2ZvbGRlcisnL0thc2lhIG5ldyBjbHVzdGVyIGVucmljaG1lbnQgZm9yIFZpa2FzaC50eHQnCiAgICAjZGY9cGQucmVhZF9jc3YoaW5wdXRfZmlsZSxzZXA9J1x0JykjIyBpbnB1dCBmaWxlIGFzIGEgZGF0YWZyYW1lCiAgICBkZiA9IHIuaW5wdXRfZm9yX2VucmljaG1lbnQKICAgIGRmCiAgICAjZGY9ZGYuZmlsbG5hKCdOQScpICMjIG5hbiBpcyBmaWxsIHdpdGggTkEKICAgICMgZGZbJ2NvbnNlbnN1cyBwaGVub3R5cGUnXT1kZlsnY29uc2Vuc3VzIHBoZW5vdHlwZSddLnN0ci5yZXBsYWNlKCdOb25lJywnTkEnKQogICAgdG1wPWRmLmNvcHkoKSAjIyB0aGlzIGlzIHRoZSB0ZW1wZXJvcnkgZGF0YSBmcmFtZSBzYW1lIGFzIGEgb3JpZ2luYWwgZGF0YWZyYW1lCiAgICB0bXAuc2V0X2luZGV4KCduZXcgZ2VuZSBJRCcsaW5wbGFjZT1UcnVlKSAjIyBtYWtlIGdlbmUgaWRzIGFzIGluZGV4CgogICAgIyMgc2VwcmF0ZSB0aGUgZGF0YWZyYW1lcyBhY2NvcmRpbmcgc2V4LXNwZWNpZmljIHBoZW5vdHlwZXMKICAgIG1hbGVfZGY9dG1wWyh0bXBbJ2NvbnMgcGhlbm90eXBlJ109PSAnQ0lUSCcpXQogICAgZmVtYWxlX2RmPXRtcFsodG1wWydjb25zIHBoZW5vdHlwZSddPT0gJ0RPWkknKV0KICAgIGJvdGhfZGY9dG1wWyh0bXBbJ2NvbnMgcGhlbm90eXBlJ109PSAnQ0lUSF9hbmRfRE9aSScpXQoKCiAgICAjIyBlbnJpY2htZW50IGFuYWx5c2lzIGZvciBtYWxlCiAgICBvdXRmaWxlPWN1cnJlbnRfZm9sZGVyKycvLi4vZGF0YV90b19leHBvcnQvbW9kdWxlX2VucmljaG1lbnRfcmVzdWx0cy9Nb2R1bGVfZW5yaWNobWVudF9ndWVycmVpcm9fY2l0aC50eHQnCiAgICAjRmlyc3QgYXJndW1uZXQ6IHRlbXBlcm9yeSBkYXRhZnJhbWUKICAgICNTZWNvbmQgYXJndW1lbnQ6IGxpc3Qgb2YgbWFsZS1zcGVjaWZpYyBnZW5lcwogICAgI1RoaXJkIGFyZ3VtbmV0OiBmaWxlIHdoZXJlIHdlIHN0b3JlIGVucmljaG1lbnQgYW5hbHlzaXMKICAgIGFwcGx5X2VucmljaCh0bXAsbWFsZV9kZi5pbmRleC50b19saXN0KCksb3V0ZmlsZSkKCiAgICAjIyBlbnJpY2htZW50IGFuYWx5c2lzIGZvciBmZW1hbGU6IHNpbWlsYXIgYXMgbWFsZQoKICAgIG91dGZpbGU9Y3VycmVudF9mb2xkZXIrJy8uLi9kYXRhX3RvX2V4cG9ydC9tb2R1bGVfZW5yaWNobWVudF9yZXN1bHRzL01vZHVsZV9lbnJpY2htZW50X2d1ZXJyZWlyb19kb3ppLnR4dCcKICAgIGFwcGx5X2VucmljaCh0bXAgLGZlbWFsZV9kZi5pbmRleC50b19saXN0KCksb3V0ZmlsZSkKCiAgICAjIyBlbnJpY2htZW50IGFuYWx5c2lzIGZvciBib3RoIHNleGVzOiA6IHNpbWlsYXIgYXMgbWFsZQoKICAgIG91dGZpbGU9Y3VycmVudF9mb2xkZXIrJy8uLi9kYXRhX3RvX2V4cG9ydC9tb2R1bGVfZW5yaWNobWVudF9yZXN1bHRzL01vZHVsZV9lbnJpY2htZW50X2d1ZXJyZWlyb19ib3RoLnR4dCcKICAgIGFwcGx5X2VucmljaCh0bXAsYm90aF9kZi5pbmRleC50b19saXN0KCksb3V0ZmlsZSkKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKCiAgIGVucmljaF9jbHVzdGVyX2ZpbmFsKCkKYGBgCgojIyMjIEVzc2VudGlhbCBnZW5lcwoKRmluZCBvdXQgaG93IG1hbnkgb2YgdGhlIGdlbmVzIGluIGVhY2ggbW9kdWxlIGhhcyBhbiBhc2V4dWFsIGJsb29kLXN0YWdlIHBoZW5vdHlwZSBnZW5lCgpgYGB7cn0KZXNzZW50aWFsX2dlbmVzIDwtIHJlYWQuY3N2KGZpbGUgPSAiLi4vZGF0YS9SZWZlcmVuY2UvYnVzaGVsbF8yMDE3X2RhdGEuY3N2IiwgaGVhZGVyID0gVFJVRSkKIyMgZXh0cmFjdCBpbmZvCmVzc2VudGlhbF9nZW5lcyA8LSBlc3NlbnRpYWxfZ2VuZXNbLCBjKCJQLi5iZXJnaGVpLmN1cnJlbnQuSUQiLCAiUGhlbm90eXBlIiApXQpuYW1lcyhlc3NlbnRpYWxfZ2VuZXMpIDwtIGMoImlkIiwgInBoZW5vdHlwZSIpCiMjIGNoYW5nZSB0aGUgdW5kZXJzY29yZSB0byBhIGRhc2gKZXNzZW50aWFsX2dlbmVzJGlkIDwtIGdzdWIoIl8iLCAiLSIsIGVzc2VudGlhbF9nZW5lcyRpZCkKZGltKGVzc2VudGlhbF9nZW5lcykKYGBgCgoKYGBge3J9CmVzc2VudGlhbF9nZW5lcyA8LQpyZWFkLmNzdihmaWxlID0gIi4uL2RhdGEvUmVmZXJlbmNlL2J1c2hlbGxfMjAxN19kYXRhLmNzdiIsIGhlYWRlciA9IFRSVUUpCiMjIGV4dHJhY3QgaW5mbwplc3NlbnRpYWxfZ2VuZXMgPC0gZXNzZW50aWFsX2dlbmVzWywgYygiUC4uYmVyZ2hlaS5jdXJyZW50LklEIiwgIlBoZW5vdHlwZSIgKV0KbmFtZXMoZXNzZW50aWFsX2dlbmVzKSA8LSBjKCJpZCIsICJwaGVub3R5cGUiKQojIyBjaGFuZ2UgdGhlIHVuZGVyc2NvcmUgdG8gYSBkYXNoCmVzc2VudGlhbF9nZW5lcyRpZCA8LSBnc3ViKCJfIiwgIi0iLCBlc3NlbnRpYWxfZ2VuZXMkaWQpCiMjIHJlbW92ZSBhbnkgdHJhbnNjcmlwdCBudW1iZXJzCiNlc3NlbnRpYWxfZ2VuZXMkaWQgPC0gc3ViKCJcXC4uKiIsICIiLCBlc3NlbnRpYWxfZ2VuZXMkaWQpCgojIyBmaW5kIG91dCB3aGljaCBtb2R1bGVzIGFsbCBzY3JlZW5lZCBnZW5lcyBhcmUgaW4KZGZfc2NyZWVuZWRfZ2VuZV9tb2R1bGVzIDwtIGdlbmVfbW9kdWxlX2RmX3NleFt3aGljaChnZW5lX21vZHVsZV9kZl9zZXgkaWQgJWluJSBlc3NlbnRpYWxfZ2VuZXMkaWQpLF0KcHJpbnQoInRvdGFsIGdlbmVzIHNjcmVlbmVkIGluIHRoaXMgbW9kdWxlIikKdGFibGUoZGZfc2NyZWVuZWRfZ2VuZV9tb2R1bGVzJG1vZHVsZSkKCiMjIGV4dHJhY3QgMyBtYWluIHBoZW5vdHlwZXMgLSB0aGVyZSBhcmUgb25seSB0d28gZmFzdCBnZW5lcywgYW5kIDEzIEluc3VmZmljaWVudCBkYXRhCmVfZ2VuZXMgPC0gZXNzZW50aWFsX2dlbmVzW2Vzc2VudGlhbF9nZW5lcyRwaGVub3R5cGUgPT0gIkVzc2VudGlhbCIsIF0kaWQKc19nZW5lcyA8LSBlc3NlbnRpYWxfZ2VuZXNbZXNzZW50aWFsX2dlbmVzJHBoZW5vdHlwZSA9PSAiU2xvdyIsIF0kaWQKZF9nZW5lcyA8LSBlc3NlbnRpYWxfZ2VuZXNbZXNzZW50aWFsX2dlbmVzJHBoZW5vdHlwZSA9PSAiRGlzcGVuc2FibGUiLCBdJGlkCgojIyBmaW5kIG91dCB3aGljaCBtb2R1bGVzIHRoZXkgYXJlIGluCmVfZ2VuZXNfZ2VuZV9tb2R1bGVzIDwtIGdlbmVfbW9kdWxlX2RmX3NleFt3aGljaChnZW5lX21vZHVsZV9kZl9zZXgkaWQgJWluJSBlX2dlbmVzKSxdCnByaW50KCJlc3NlbnRpYWwgZ2VuZXMgYnkgbW9kdWxlIikKdGFibGUoZV9nZW5lc19nZW5lX21vZHVsZXMkbW9kdWxlKQpzX2dlbmVzX2dlbmVfbW9kdWxlcyA8LSBnZW5lX21vZHVsZV9kZl9zZXhbd2hpY2goZ2VuZV9tb2R1bGVfZGZfc2V4JGlkICVpbiUgc19nZW5lcyksXQpwcmludCgic2xvdyBnZW5lcyBieSBtb2R1bGUiKQp0YWJsZShzX2dlbmVzX2dlbmVfbW9kdWxlcyRtb2R1bGUpCmRfZ2VuZXNfZ2VuZV9tb2R1bGVzIDwtIGdlbmVfbW9kdWxlX2RmX3NleFt3aGljaChnZW5lX21vZHVsZV9kZl9zZXgkaWQgJWluJSBkX2dlbmVzKSxdCnByaW50KCJkaXNwZW5zaWJsZSBnZW5lcyBieSBtb2R1bGUiKQp0YWJsZShkX2dlbmVzX2dlbmVfbW9kdWxlcyRtb2R1bGUpCgojIyBtYWtlIGEgY29tYmluZWQgdGFibGUgd2l0aCB0aGlzIGluZm8KcGNfc2NyZWVuZWQgPC0gZGF0YS5mcmFtZShlc3NlbnRpYWwgPSB0YWJsZShlX2dlbmVzX2dlbmVfbW9kdWxlcyRtb2R1bGUpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93ID0gdGFibGUoc19nZW5lc19nZW5lX21vZHVsZXMkbW9kdWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwZW5zaWJsZSA9IHRhYmxlKGRfZ2VuZXNfZ2VuZV9tb2R1bGVzJG1vZHVsZSksIAogICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbmVkID0gIHRhYmxlKGRmX3NjcmVlbmVkX2dlbmVfbW9kdWxlcyRtb2R1bGUpKVssLWMoMywgNSwgNyldCm5hbWVzKHBjX3NjcmVlbmVkKSA8LSBjKCJtb2R1bGUiLCAiZXNzZW50aWFsIiwgInNsb3ciLCAiZGlzcGVuc2libGUiLCAic2NyZWVuZWQiKQpwY19zY3JlZW5lZCRwY19lIDwtIChwY19zY3JlZW5lZCRlc3NlbnRpYWwgL3BjX3NjcmVlbmVkJHNjcmVlbmVkKSoxMDAKcGNfc2NyZWVuZWQkcGNfcyA8LSAocGNfc2NyZWVuZWQkc2xvdyAvcGNfc2NyZWVuZWQkc2NyZWVuZWQpKjEwMApwY19zY3JlZW5lZCRwY19kIDwtIChwY19zY3JlZW5lZCRkaXNwZW5zaWJsZSAvcGNfc2NyZWVuZWQkc2NyZWVuZWQpKjEwMAoKYGBgCgpgYGB7cn0KIyMgY2hhbmdlIHJvdyBvcmRlcjoKcm93Lm9yZGVyIDwtIGMoIjEwIiwgIjkiLCAiMTciLCAiNCIsICIyIiwgIjYiLCAiMTIiLCAiMTQiLAogICAgICAgICAgICAgICAiMjEiLCAiNyIsIAogICAgICAgICAgICAgICAiMjIiLCAiMjMiLCIxMyIsIjE2IiwgIjE4IiwgIjE5IiwgIjExIiwgIjE1IiwgIjUiLAogICAgICAgICAgICAgICAiMjAiLCAiOCIsICIzIiwgIjEiCiAgICAgICAgICAgICAgICkKIyMgY2hhbmdlIHRoZSBtb2R1bGUgdG8gYSBzdHJpbmcKI3BjX3NjcmVlbmVkJG1vZHVsZSA8LSBhcy5udW1lcmljKGFzLmNoYXJhY3RlcihwY19zY3JlZW5lZCRtb2R1bGUpKQojcGNfc2NyZWVuZWQkbW9kdWxlIDwtIGFzLmZhY3RvcihwY19zY3JlZW5lZCRtb2R1bGUpCiNwY19zY3JlZW5lZCA8LSBwY19zY3JlZW5lZFttYXRjaChyb3cub3JkZXIsIHBjX3NjcmVlbmVkJG1vZHVsZSksIF0KcGNfc2NyZWVuZWQkbW9kdWxlIDwtIGZhY3RvcihwY19zY3JlZW5lZCRtb2R1bGUsIGxldmVscyA9IHJldihjKCIxMCIsICI5IiwgIjE3IiwgIjQiLCAiMiIsICI2IiwgIjEyIiwgIjE0IiwKICAgICAgICAgICAgICAgIjIxIiwgIjciLCAKICAgICAgICAgICAgICAgIjIyIiwgIjIzIiwiMTMiLCIxNiIsICIxOCIsICIxOSIsICIxMSIsICIxNSIsICI1IiwKICAgICAgICAgICAgICAgIjIwIiwgIjgiLCAiMyIsICIxIgogICAgICAgICAgICAgICApKSkKCmxpYnJhcnkoc2NhbGVzKSAjIEZvciB0aGUgcGVyY2VudF9mb3JtYXQoKSBmdW5jdGlvbgoKIGgxIDwtIGdncGxvdChkYXRhID0gcGNfc2NyZWVuZWQsIG1hcHBpbmcgPSBhZXMoeCA9IG1vZHVsZSwgZmlsbD1wY19lKSkgKwogIGdlb21fYmFyKGNvbCA9ICIjRkZGRkZGIiwgd2lkdGggPSAxKSsKICAgICAgdGhlbWVfdm9pZCgpICsKICAgIHRoZW1lKHBhbmVsLnNwYWNpbmcueCA9IHVuaXQoMSwgIm1tIikpICsKICAgIHNjYWxlX2ZpbGxfY29udGludW91c19zZXF1ZW50aWFsKHBhbGV0dGUgPSAiUmVkcyIsIGxhYmVscyA9IHBlcmNlbnRfZm9ybWF0KHNjYWxlID0gMSksIGxpbWl0cz1jKDAsMTAwKSkgKwogIGNvb3JkX2ZsaXAoKQogbGVnZW5kIDwtIGdldF9sZWdlbmQoaDEpCiBoMSA8LSBoMSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKIAogIGgyIDwtIGdncGxvdChkYXRhID0gcGNfc2NyZWVuZWQsIG1hcHBpbmcgPSBhZXMoeCA9IG1vZHVsZSwgZmlsbD1wY19zKSkgKwogIGdlb21fYmFyKGNvbCA9ICIjRkZGRkZGIiwgd2lkdGggPSAxKSsKICAgICAgdGhlbWVfdm9pZCgpICsKICAgIHRoZW1lKHBhbmVsLnNwYWNpbmcueCA9IHVuaXQoMSwgIm1tIikpICsKICAgIHNjYWxlX2ZpbGxfY29udGludW91c19zZXF1ZW50aWFsKHBhbGV0dGUgPSAiUmVkcyIsIGxhYmVscyA9IHBlcmNlbnRfZm9ybWF0KHNjYWxlID0gMSksIGxpbWl0cz1jKDAsMTAwKSkgKwogIGNvb3JkX2ZsaXAoKQogbGVnZW5kXzIgPC0gZ2V0X2xlZ2VuZChoMikKIGgyIDwtIGgyICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQogCiAgaDMgPC0gZ2dwbG90KGRhdGEgPSBwY19zY3JlZW5lZCwgbWFwcGluZyA9IGFlcyh4ID0gbW9kdWxlLCBmaWxsPXBjX2QpKSArCiAgZ2VvbV9iYXIoY29sID0gIiNGRkZGRkYiLCB3aWR0aCA9IDEpKwogICAgICB0aGVtZV92b2lkKCkgKwogICAgdGhlbWUocGFuZWwuc3BhY2luZy54ID0gdW5pdCgxLCAibW0iKSkgKwogICAgc2NhbGVfZmlsbF9jb250aW51b3VzX3NlcXVlbnRpYWwocGFsZXR0ZSA9ICJSZWRzIiwgbGFiZWxzID0gcGVyY2VudF9mb3JtYXQoc2NhbGUgPSAxKSwgbGltaXRzPWMoMCwxMDApKSArCiAgY29vcmRfZmxpcCgpCiBsZWdlbmRfMyA8LSBnZXRfbGVnZW5kKGgzICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIsIGxlZ2VuZC5ib3gubWFyZ2luID0gbWFyZ2luKDAsIDAsIDAsIDEyKSkpCiBoMyA8LSBoMyArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKIAogIyMgYWRkIHNvbWUgc3BhY2UgdG8gdGhlIGxlZnQgb2YgdGhlIGxlZ2VuZCBhczogaHR0cHM6Ly93aWxrZWxhYi5vcmcvY293cGxvdC9hcnRpY2xlcy9zaGFyZWRfbGVnZW5kcy5odG1sCiNsZWdlbmQgPC0gbGVnZW5kICsgdGhlbWUobGVnZW5kLmJveC5tYXJnaW4gPSBtYXJnaW4oMCwgMCwgMCwgMTIpKQogCiAKYmxvb2RzdGFnZV9hbm5vdGF0aW9uIDwtIHBsb3RfZ3JpZChoMSxoMixoMywgbnJvdyA9IDEsIHJlbF93aWR0aHMgPSBjKDEsMSwxKSkKYmxvb2RzdGFnZV9hbm5vdGF0aW9uIDwtIHBsb3RfZ3JpZChibG9vZHN0YWdlX2Fubm90YXRpb24sbGVnZW5kXzMsIG5yb3cgPSAyLCByZWxfaGVpZ2h0cyA9IGMoMywxKSkKYmxvb2RzdGFnZV9hbm5vdGF0aW9uCmBgYAoKYGBge3J9Cmdnc2F2ZSgiLi4vaW1hZ2VzX3RvX2V4cG9ydC9ibG9vZHN0YWdlX2Fubm90YXRpb24ucG5nIiwgcGxvdCA9IGJsb29kc3RhZ2VfYW5ub3RhdGlvbiwgZGV2aWNlID0gInBuZyIsIHBhdGggPSBOVUxMLCBzY2FsZSA9IDEsIHdpZHRoID0gMTAsIGhlaWdodCA9IDEwLCB1bml0cyA9ICJjbSIsIGRwaSA9IDMwMCwgbGltaXRzaXplID0gVFJVRSkKYGBgCgpzZXQgdXAgZGYgZm9yIHB5dGhvbgpgYGB7cn0KIyMgcmVhZCBpbiBtb2R1bGVzCm1vZHVsZXMgPC0gYXMuZGF0YS5mcmFtZShnZW5lX21vZHVsZV9kZl9zZXgpCiMjIHRha2UgY29scyBvZiBpbnRlcmVzdAptb2R1bGVzIDwtIG1vZHVsZXNbICxjKCJpZCIsICJtb2R1bGUiKSwgZHJvcCA9IEZBTFNFXQojIyBjaGFuZ2UgdGhlIHVuZGVyc2NvcmUgdG8gYSBkYXNoCm1vZHVsZXMkaWQgPC0gZ3N1YigiLSIsICJfIiwgbW9kdWxlcyRpZCkKCiMjIHJlYWQgaW4gcGhlbm90eXBlcyBmcm9tIHNjcmVlbgplc3NlbnRpYWxfZ2VuZXMgPC0KcmVhZC5jc3YoZmlsZSA9ICIuLi9kYXRhL1JlZmVyZW5jZS9idXNoZWxsXzIwMTdfZGF0YS5jc3YiLCBoZWFkZXIgPSBUUlVFKQojIyBleHRyYWN0IGluZm8KZXNzZW50aWFsX2dlbmVzIDwtIGVzc2VudGlhbF9nZW5lc1ssIGMoIlAuLmJlcmdoZWkuY3VycmVudC5JRCIsICJQaGVub3R5cGUiICldCm5hbWVzKGVzc2VudGlhbF9nZW5lcykgPC0gYygiaWQiLCAicGhlbm90eXBlIikKc2NyZWVuX2hpdHNfdG9fbWVyZ2UgPC0gZXNzZW50aWFsX2dlbmVzCgojIyBtZXJnZSB0b2dlcnRoZXIgdG8gY3JlYXRlIGZpbmFsIGRmCmlucHV0X2Zvcl9lbnJpY2htZW50IDwtIG1lcmdlKG1vZHVsZXMsIHNjcmVlbl9oaXRzX3RvX21lcmdlLCBieS54ID0gImlkIiwgYnkueSA9ICJpZCIsIGFsbC54ID0gVFJVRSkKbmFtZXMoaW5wdXRfZm9yX2VucmljaG1lbnQpIDwtIGMoIm5ldyBnZW5lIElEIiwgIkNsdXN0ZXIiLCAiY29ucyBwaGVub3R5cGUiKQojIyBtb2RpZnkgdG8gbWF0Y2ggdmlrYXNoIHRhYmxlCiMjIHJlbW92ZSBOQSB2YWx1ZXMKaW5wdXRfZm9yX2VucmljaG1lbnQgPC0gaW5wdXRfZm9yX2VucmljaG1lbnRbIWlzLm5hKGlucHV0X2Zvcl9lbnJpY2htZW50JGBjb25zIHBoZW5vdHlwZWApLCBdCiMjY2xlYW4gdXAKcm0oc2NyZWVuX2hpdHNfdG9fbWVyZ2UpCmBgYAoKZG8gc2lnbmlmaWNhbmNlIHRlc3QgaW4gcHl0aG9uIC0gdXBkYXRlIHRoaXMgdG8gUiBhdCBhIGxhdGVyIGRhdGUgLSBWaWthc2ggd3JvdGUgdGhpcyBmb3IgZW5yaWNobWVudCBvZiBzY3JlZW4gaGl0cyBpbiBidWxrIGRhdGEKYGBge3B5dGhvbn0KaW1wb3J0IG9zCmltcG9ydCBwYW5kYXMgYXMgcGQKZnJvbSBzY2lweS5zdGF0cyBpbXBvcnQgaHlwZXJnZW9tICMjIGZvciBoeXBlcmdlb210cmljIGRpc3RyaWJ1dGlvbnMKaW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBzdGF0c21vZGVscy5zdGF0cy5tdWx0aXRlc3QgYXMgbXRlc3QgIyMgZm9yIG11bHRpcGxlIGh5cG90aGVzaXMgdGVzdGluZwpjdXJyZW50X2ZvbGRlciA9IG9zLmdldGN3ZCgpICMjIGN1cnJlbnQgZGlyZWN0b3J5IHBhdGgKCmRlZiBhcHBseV9lbnJpY2godG1wLHNleF9nZW5lX2xpc3Qsb3V0ZmlsZSk6CiAgICAjIyBncm91cGJ5IGFsb25nIFBoZW5vdHllcGVzCiAgICAjRmlyc3QgYXJndW1uZXQ6IHRlbXBlcm9yeSBkYXRhZnJhbWUKICAgICNTZWNvbmQgYXJndW1lbnQ6IGxpc3Qgb2YgbWFsZS1zcGVjaWZpYyBnZW5lcwogICAgI1RoaXJkIGFyZ3VtbmV0OiBmaWxlIHdoZXJlIHdlIHN0b3JlIGVucmljaG1lbnQgYW5hbHlzaXMKCgogICAgTT1sZW4odG1wLmluZGV4KSAjIHRvdGFsIG51bWJlciBvZiBnZW5lcwogICAgcHZhbHM9W10gIyBsaXN0IGZvciBzdG9yaW5nIHB2YWx1ZXMKICAgIG5fbGlzdD1bXSAjIHN0b3JlIG51bWJlciBvZiBnZW5lcyBpbiBjbHVzdGVyCiAgICB4X2xpc3Q9W10gIyMgc3RvcmUgbnVtYmVyIG9mIHNleC1zcGVjaWZpYyBnZW5lcyBpbiBjbHVzdGVyCiAgICBnZW5lcz1bXSAjIyB3ZSBzdG9yZSBnZW5lcyAoc2V4LXNwZWNpZmMgZ2VuZSBpZHMpCiAgICBjbHVzdGVycz1bXSAjIyBzdG9yZSBjbHVzdGVyIG51bWJlcgoKICAgICMjIGdyb3VwIGNsdXN0ZXJzCiAgICBmb3Igayx2IGluIHRtcC5ncm91cGJ5KFsgJ0NsdXN0ZXInXSkuaW5kaWNlcy5pdGVtcygpOgogICAgICAgICMjIHByaW50KGssIGxlbih2KSkKICAgICAgICBjbHVzdGVycy5hcHBlbmQoaykgIyMgc3RvcmUgY2x1c3RlciBudW1iZXIKICAgICAgICBjbHVzdF9nZW5lcz1zZXQodG1wLmluZGV4W3ZdLnRvX2xpc3QoKSkgIyMgZ2VuZXMgaW4gdGhlIGNsdXN0ZXIKCiAgICAgICAgc2V4X2dlbmVfaW5fY2x1c3Q9IHNldChzZXhfZ2VuZV9saXN0KSYgY2x1c3RfZ2VuZXMgIyMgaG93IG1hbnkgc2V4LXNwZWNpZmljIGdlbmVzIGFyZSBmb3VuZCBpbiBjbHVzdGVyCiAgICAgICAgIyMgaG93IG1hbnkgYXJlIGluIHBoZW5veXBlCiAgICAgICAgTT1NICMjIHRvdGFsIGdlbmVzCiAgICAgICAgTj1sZW4oc2V4X2dlbmVfbGlzdCkgIyMgc2V4LXNwZWNpZmljIGdlbmVzCiAgICAgICAgbj1sZW4oY2x1c3RfZ2VuZXMpICMjIHRvdGFsIG51bWJlciBvZiBjbHVzdGVyIGdlbmVzCgogICAgICAgIHJ2ID0gaHlwZXJnZW9tKE0sIG4sIE4pICMjIGh5cGVyZ2VvbWV0cmljICBkaXN0cmlidXRpb25zCiAgICAgICAgeD1sZW4oc2V4X2dlbmVfaW5fY2x1c3QpICMjIG51bWJlciBvZiBzZXgtc3BlY2lmaWMgZ2VuZXMgaW4gY2x1c3RlcgoKICAgICAgICAjIyBmb3IgcC12YWx1ZSB3ZSBuZWVkIHRvIGdldCBzdW1tYXRpb24gb2YgYWxsIHByb2JhbGl0aWVzIGdyZWF0ZXIgdGhhbiA+IHgKICAgICAgICBwdmFsPSAxLXJ2LmNkZih4KQogICAgICAgIHB2YWxzLmFwcGVuZChwdmFsKQogICAgICAgIG5fbGlzdC5hcHBlbmQobikKICAgICAgICB4X2xpc3QuYXBwZW5kKHgpCiAgICAgICAgZ2VuZXMuYXBwZW5kKCcsICcuam9pbihzZXhfZ2VuZV9pbl9jbHVzdCkpCiAgICBmZHI9bXRlc3QubXVsdGlwbGV0ZXN0cyhwdmFscywgYWxwaGE9MC4wNSwgbWV0aG9kPSdmZHJfYmgnKQogICAgZW5yaWNoPXsnQ2x1c3Rlcic6Y2x1c3RlcnMsICdwdmFscyc6cHZhbHMsJ2NsdXN0ZXJfc2l6ZSc6bl9saXN0LCcjIG9mIGdlbmVzIGZvdW5kIGluIGNsdXN0ZXInOnhfbGlzdCwnZ2VuZXMnOmdlbmVzLCdGRFInOmZkclsxXX0KCiAgICAjIyBjcmVhdGUgZW5yaWNobWVudCB0YWJsZQogICAgZW5yaWNoX2RmPXBkLkRhdGFGcmFtZS5mcm9tX2RpY3QoZW5yaWNoKQogICAgZW5yaWNoX3NvcmV0ZWQ9ZW5yaWNoX2RmLnNvcnRfdmFsdWVzKGJ5PVsncHZhbHMnXSxhc2NlbmRpbmc9VHJ1ZSkKCiAgICBlbnJpY2hfc29yZXRlZC50b19jc3Yob3V0ZmlsZSxzZXA9J1x0JyxpbmRleD1Ob25lKQogICAgCgoKCmRlZiBlbnJpY2hfY2x1c3Rlcl9maW5hbCgpOgogICAgJycnIENhbGN1bGF0ZSBwLXZhbHVlIGFuZCBGRFIgdXNpbmcgZW5yaWNobWVudCBhbmFseXNpcy4gV2UgdXNlZCBoeXBlcmdlb21ldHJpYyB0ZXN0JycnCgogICAgIyMjIGlucHV0IGZpbGUgKHByb3ZpZGVkIGJ5IE9saXZlcik6IHRoaXMgZmlsZSBoYXMgMyBjb2x1bW5zCiAgICAjIEZpcnN0IGNvbHVtbjogJ25ldyBnZW5lIElEJwogICAgIyBTZWNvbmQgY29sdW1uOiAnQ2x1c3RlcicKICAgICMgVGhpcmQgY29sdW1uOiAnY29ucyBwaGVub3R5cGUnCiAgICAjIwogICAgI2lucHV0X2ZpbGU9Y3VycmVudF9mb2xkZXIrJy9LYXNpYSBuZXcgY2x1c3RlciBlbnJpY2htZW50IGZvciBWaWthc2gudHh0JwogICAgI2RmPXBkLnJlYWRfY3N2KGlucHV0X2ZpbGUsc2VwPSdcdCcpIyMgaW5wdXQgZmlsZSBhcyBhIGRhdGFmcmFtZQogICAgZGYgPSByLmlucHV0X2Zvcl9lbnJpY2htZW50CiAgICBkZgogICAgI2RmPWRmLmZpbGxuYSgnTkEnKSAjIyBuYW4gaXMgZmlsbCB3aXRoIE5BCiAgICAjIGRmWydjb25zZW5zdXMgcGhlbm90eXBlJ109ZGZbJ2NvbnNlbnN1cyBwaGVub3R5cGUnXS5zdHIucmVwbGFjZSgnTm9uZScsJ05BJykKICAgIHRtcD1kZi5jb3B5KCkgIyMgdGhpcyBpcyB0aGUgdGVtcGVyb3J5IGRhdGEgZnJhbWUgc2FtZSBhcyBhIG9yaWdpbmFsIGRhdGFmcmFtZQogICAgdG1wLnNldF9pbmRleCgnbmV3IGdlbmUgSUQnLGlucGxhY2U9VHJ1ZSkgIyMgbWFrZSBnZW5lIGlkcyBhcyBpbmRleAoKICAgICMjIHNlcHJhdGUgdGhlIGRhdGFmcmFtZXMgYWNjb3JkaW5nIHNleC1zcGVjaWZpYyBwaGVub3R5cGVzCiAgICBtYWxlX2RmPXRtcFsodG1wWydjb25zIHBoZW5vdHlwZSddPT0gJ0Vzc2VudGlhbCcpXQogICAgZmVtYWxlX2RmPXRtcFsodG1wWydjb25zIHBoZW5vdHlwZSddPT0gJ0Rpc3BlbnNhYmxlJyldCiAgICBib3RoX2RmPXRtcFsodG1wWydjb25zIHBoZW5vdHlwZSddPT0gJ1Nsb3cnKV0KCgogICAgIyMgZW5yaWNobWVudCBhbmFseXNpcyBmb3IgbWFsZQogICAgb3V0ZmlsZT1jdXJyZW50X2ZvbGRlcisnLy4uL2RhdGFfdG9fZXhwb3J0L21vZHVsZV9lbnJpY2htZW50X3Jlc3VsdHMvTW9kdWxlX2VucmljaG1lbnRfYnVzaGVsbF9lc3NlbnRpYWwudHh0JwogICAgI0ZpcnN0IGFyZ3VtbmV0OiB0ZW1wZXJvcnkgZGF0YWZyYW1lCiAgICAjU2Vjb25kIGFyZ3VtZW50OiBsaXN0IG9mIG1hbGUtc3BlY2lmaWMgZ2VuZXMKICAgICNUaGlyZCBhcmd1bW5ldDogZmlsZSB3aGVyZSB3ZSBzdG9yZSBlbnJpY2htZW50IGFuYWx5c2lzCiAgICBhcHBseV9lbnJpY2godG1wLG1hbGVfZGYuaW5kZXgudG9fbGlzdCgpLG91dGZpbGUpCgogICAgIyMgZW5yaWNobWVudCBhbmFseXNpcyBmb3IgZmVtYWxlOiBzaW1pbGFyIGFzIG1hbGUKCiAgICBvdXRmaWxlPWN1cnJlbnRfZm9sZGVyKycvLi4vZGF0YV90b19leHBvcnQvbW9kdWxlX2VucmljaG1lbnRfcmVzdWx0cy9Nb2R1bGVfZW5yaWNobWVudF9idXNoZWxsX2Rpc3BlbnNhYmxlLnR4dCcKICAgIGFwcGx5X2VucmljaCh0bXAgLGZlbWFsZV9kZi5pbmRleC50b19saXN0KCksb3V0ZmlsZSkKCiAgICAjIyBlbnJpY2htZW50IGFuYWx5c2lzIGZvciBib3RoIHNleGVzOiA6IHNpbWlsYXIgYXMgbWFsZQoKICAgIG91dGZpbGU9Y3VycmVudF9mb2xkZXIrJy8uLi9kYXRhX3RvX2V4cG9ydC9tb2R1bGVfZW5yaWNobWVudF9yZXN1bHRzL01vZHVsZV9lbnJpY2htZW50X2J1c2hlbGxfc2xvdy50eHQnCiAgICBhcHBseV9lbnJpY2godG1wLGJvdGhfZGYuaW5kZXgudG9fbGlzdCgpLG91dGZpbGUpCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CgogICBlbnJpY2hfY2x1c3Rlcl9maW5hbCgpCmBgYAoKIyMjIyBWaXN1YWxpc2UgbW9kdWxlIGV4cHJlc3Npb24KCnBsb3Qgb3V0IG1vZHVsZXMKYGBge3IsIGZpZy5oZWlnaHQgPSA3LCBmaWcud2lkdGggPSA3fQojIyBtYWtlIGFnZ3JlZ2F0ZWQgZGYgYWdhaW4gc28geW91IGNhbiBlZGl0IGl0CmFnZ19tYXQgPC0gYWdncmVnYXRlX2dlbmVfZXhwcmVzc2lvbihtb25vY2xlLm9iamVjdCwgZ2VuZV9tb2R1bGVfZGZfc2V4LCBjZWxsX2dyb3VwX2RmKQoKIyMgaCBjbHVzdCB0aGUgYWdncmVnYXRlZCBtYXRyaXgKbW9kdWxlX2RlbmRybyA8LSBoY2x1c3QoZGlzdChhZ2dfbWF0KSkKCiMjIHVzZSB0aGVzZSBjbHVzdGVycyB0byByZW9yZGVyIHRoZSBtb2R1bGVzCmdlbmVfbW9kdWxlX2RmX3NleCRtb2R1bGUgPC0gZmFjdG9yKGdlbmVfbW9kdWxlX2RmX3NleCRtb2R1bGUsIGxldmVscyA9IHJvdy5uYW1lcyhhZ2dfbWF0KVttb2R1bGVfZGVuZHJvJG9yZGVyXSkKCiMjIHBsb3QKVU1BUF9tb2R1bGVzIDwtIHBsb3RfY2VsbHMobW9ub2NsZS5vYmplY3QsIGdlbmVzPWdlbmVfbW9kdWxlX2RmX3NleCAlPiUgZmlsdGVyKG1vZHVsZSAlaW4lIGMoMTpsZW5ndGgobGV2ZWxzKGdlbmVfbW9kdWxlX2RmX3NleCRtb2R1bGUpKSkpLAogICAgICAgICAgIGNlbGxfc2l6ZSA9IDIsIAogICAgICAgICAgIHggPSAxLCB5ID0gMiwKICAgICAgICAgICBsYWJlbF9jZWxsX2dyb3Vwcz1GQUxTRSwKICAgICAgICAgICBzY2FsZV90b19yYW5nZSA9IFRSVUUsCiAgICAgICAgICAgc2hvd190cmFqZWN0b3J5X2dyYXBoPUZBTFNFKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgI3NjYWxlX2NvbG91cl92aXJpZGlzX2MobmFtZSA9ICJleHByZXNzaW9uIiwgb3B0aW9uID0gIkMiLCBhbHBoYSA9IDEpICsKICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZV9jb2xvcl9jb250aW51b3VzX3NlcXVlbnRpYWwocGFsZXR0ZSA9ICJQdXJwbGVzIDIiKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRfZml4ZWQoKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWVfdm9pZCgpICsKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSkpCgojIyB2aWV3ClVNQVBfbW9kdWxlcwpgYGAKc2F2ZQpgYGB7cn0KI2dnc2F2ZSgiLi4vaW1hZ2VzX3RvX2V4cG9ydC9HQ1NLT19zZXhicmFuY2hfdW1hcF9tb2R1bGVzLnBuZyIsIHBsb3QgPSBVTUFQX21vZHVsZXMsIGRldmljZSA9ICJwbmciLCBwYXRoID0gTlVMTCwgc2NhbGUgPSAxLCB3aWR0aCA9IDMwLCBoZWlnaHQgPSAzMCwgdW5pdHMgPSAiY20iLCBkcGkgPSAzMDAsIGxpbWl0c2l6ZSA9IFRSVUUpCmBgYAoKYGBge3J9CiMjIG1ha2UgYSBkYXRhZnJhbWUgb2YgZ2VuZXMgcGVyIG1vZHVsZQpnZW5lc19wZXJfbW9kdWxlIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoZ2VuZV9tb2R1bGVfZGZfc2V4JG1vZHVsZSkpCgojIyBpbnNwZWN0CmdlbmVzX3Blcl9tb2R1bGUKYGBgCgpgYGB7ciwgZmlnLmhlaWdodCA9IDgsIGZpZy53aWR0aCA9IDEyfQojIyBBLiBQcmVwYXJhdGlvbiBvZiBkYXRhZnJhbWUKCiMjIHByZXBhcmUgY3VzdG9tIGRhdGFmcmFtZSBmb3IgYWxsIGNlbGxzIGJ5IG1vZHVsZXM6CmFnZ19tYXRfbm9fZ3JvdXAgPC0gYWdncmVnYXRlX2dlbmVfZXhwcmVzc2lvbihtb25vY2xlLm9iamVjdCwgZ2VuZV9tb2R1bGVfZGZfc2V4LCBzY2FsZV9hZ2dfdmFsdWVzID0gVFJVRSkKCiMjIEIuIGFubm90YXRpb25zCgojIyBtYWtlIGFuIGFub3RhdGlvbgojIyBhZGQgcHQgdG8gdGhlIG1vbm9jbGUgb2JqZWN0Cm1vbm9jbGUub2JqZWN0QGNvbERhdGEkcHRfc2V4IDwtIGFzLmRhdGEuZnJhbWUocHNldWRvdGltZShtb25vY2xlLm9iamVjdCwgcmVkdWN0aW9uX21ldGhvZCA9ICJVTUFQIikpWywxXQojIyBtYWtlIGFuIGFubm90YXRpb24gZGF0YWZyYW1lCmFubm9fbm9fZ3JvdXAgPC0gZGF0YS5mcmFtZShtb25vY2xlLm9iamVjdEBjb2xEYXRhJG1vbm9jbGVfc2V4LCBtb25vY2xlLm9iamVjdEBjb2xEYXRhJHB0X3NleCwgYXMuZmFjdG9yKG1vbm9jbGUub2JqZWN0QGNvbERhdGEkUHJlZGljdGlvbi5TcGVhcm1hbi5fS2FzaWEpLCByb3cubmFtZXMgPSByb3duYW1lcyhtb25vY2xlLm9iamVjdEBjb2xEYXRhKSkKbmFtZXMoYW5ub19ub19ncm91cCkgPC0gYygiU2V4IiwgIlBzZXVkb3RpbWUiLCAiUmVhbF90aW1lX3ByZWRpY3Rpb24iKQoKIyMgbWFrZSBhbm5vdGF0aW9uIGNvbG91cnMKYW5ub3RhdGlvbl9jb2xvdXJzIDwtIGxpc3QoU2V4ID0gYyhNYWxlPSIjMDE2YzAwIiwgRmVtYWxlPSIjYTUyYjFlIiwgQmlwb3RlbnRpYWwgPSAiI2ZmZTQwMCIsIEFzZXh1YWxfRWFybHkgPSAiIzAwNTJjNSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQc2V1ZG90aW1lID0gcGxhc21hKDEyLCBkaXJlY3Rpb24gPSAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhbF90aW1lX3ByZWRpY3Rpb24gPSBjKCIwIiA9IHZpcmlkaXMoOCwgZGlyZWN0aW9uID0gMSlbMV0gLCIxIiA9ICB2aXJpZGlzKDgsIGRpcmVjdGlvbiA9IDEpWzJdICwiNCIgPSB2aXJpZGlzKDgsIGRpcmVjdGlvbiA9IDEpWzNdICwiNiIgPSB2aXJpZGlzKDgsIGRpcmVjdGlvbiA9IDEpWzRdICwiOCIgPSB2aXJpZGlzKDgsIGRpcmVjdGlvbiA9IDEpWzVdICAsIjEyIiAgPSB2aXJpZGlzKDgsIGRpcmVjdGlvbiA9IDEpWzZdICAsIjE4IiA9IHZpcmlkaXMoOCwgZGlyZWN0aW9uID0gMSlbN10gICwiMjQiID0gdmlyaWRpcyg4LCBkaXJlY3Rpb24gPSAxKVs4XSkpCgojIyBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBjb2xzIChjZWxscykgaW4gZGF0YSBmcmFtZQpjb2wub3JkZXIgPC0gcm93bmFtZXMoYW5ub19ub19ncm91cFt3aXRoKGFubm9fbm9fZ3JvdXAsIG9yZGVyKFNleCwgUHNldWRvdGltZSkpLCBdKQphZ2dfbWF0X25vX2dyb3VwIDwtIGFnZ19tYXRfbm9fZ3JvdXBbLGNvbC5vcmRlcl0KCiMjIHJlb3JkZXIgdGhlIHJvd3MgKGdlbmUgbW9kdWxlcykgaW4gdGhlIGRhdGEgZnJhbWUgc28gdGhleSBhcmUgaW4gcHQgb3JkZXIKIyMgZGVmaW5lIHRoZSBvcmRlciB2aXN1YWxseSBhbmQgdXNpbmcgdGhlIGNsdXN0ZXJzIG9yaWdpbmFsbHkgcHJvZHVjZWQKcm93Lm9yZGVyIDwtIGMoIjEwIiwgIjkiLCAiMTciLCAiNCIsICIyIiwgIjYiLCAiMTIiLCAiMTQiLAogICAgICAgICAgICAgICAiMjEiLCAiNyIsIAogICAgICAgICAgICAgICAiMjIiLCAiMjMiLCIxMyIsIjE2IiwgIjE4IiwgIjE5IiwgIjExIiwgIjE1IiwgIjUiLAogICAgICAgICAgICAgICAiMjAiLCAiOCIsICIzIiwgIjEiCiAgICAgICAgICAgICAgICkKIyMgcmVvcmRlciB1c2luZyBuZXcgb3JkZXIKYWdnX21hdF9ub19ncm91cCA8LSBhZ2dfbWF0X25vX2dyb3VwW3Jvdy5vcmRlciwgXQoKIyMgZm9yIGN1dHMgaW4gY29sdW1ucyAtIHVzZWQgbGF0ZXIgdG8gY291bnQgbnVtYmVyIG9mIGNlbGxzIGluIGVhY2ggY2F0CmRmX21ldGEgPC0gYXMuZGF0YS5mcmFtZShtb25vY2xlLm9iamVjdEBjb2xEYXRhKQpmZW1hbGVfY2VsbHMgPC0gcm93bmFtZXMoZGZfbWV0YVt3aGljaChkZl9tZXRhJG1vbm9jbGVfc2V4ID09ICJGZW1hbGUiKSwgXSkKbWFsZV9jZWxscyA8LSByb3duYW1lcyhkZl9tZXRhW3doaWNoKGRmX21ldGEkbW9ub2NsZV9zZXggPT0gIk1hbGUiKSwgXSkKYmlfY2VsbHMgPC0gcm93bmFtZXMoZGZfbWV0YVt3aGljaChkZl9tZXRhJG1vbm9jbGVfc2V4ID09ICJCaXBvdGVudGlhbCIpLCBdKQphc2V4X2NlbGxzIDwtIHJvd25hbWVzKGRmX21ldGFbd2hpY2goZGZfbWV0YSRtb25vY2xlX3NleCA9PSAiQXNleHVhbF9FYXJseSIpLCBdKQpybShkZl9tZXRhKQoKIyMgYWRkIG1vZHVsZSBhbmQgdGhlIG51bWJlciBvZiBjZWxscyB0byB0aGUgcm93CiMjIGNoYW5nZSBuYW1lcyBmb3Igcm93IG5hbWVzIHRvIGluY2x1ZGUgIm1vZHVsZSAiIGF0IHRoZSBiZWdpbmluZyBvZiB0aGVtCmxhYmVscy5yb3cgPC0gc3RyaW5ncjo6c3RyX2MoIk1vZHVsZSAiLCByb3cubmFtZXMoYWdnX21hdF9ub19ncm91cCkpCiMjIHJlb3JkZXIgZnJlcXVlbmN5IHNvIHRoYXQgaXQgaXMgbWF0Y2hpbmcgb3VyIG1hdHJpeApnZW5lc19wZXJfbW9kdWxlX29yZGVyZWQgPC0gZ2VuZXNfcGVyX21vZHVsZVttYXRjaChyb3cubmFtZXMoYWdnX21hdF9ub19ncm91cCksIGdlbmVzX3Blcl9tb2R1bGUkVmFyMSksIF0KIyMgYWRkIG51bWJlciBvZiBjZWxscyB0byB0aGUgcm93bmFtZXMgZm9yIHRoZSBtb2R1bGUKZm9yKGkgaW4gc2VxX2Fsb25nKGdlbmVzX3Blcl9tb2R1bGVfb3JkZXJlZCRGcmVxKSl7CiAgbGFiZWxzLnJvd1tpXSA8LSBzdHJpbmdyOjpzdHJfYyhsYWJlbHMucm93W2ldLCIgKG4gPSAiICxnZW5lc19wZXJfbW9kdWxlX29yZGVyZWQkRnJlcVtpXSwgIikiKQp9CgojIyBDLiBQbG90dGluZwoKIyMgcGxvdApoZWF0bWFwX21haW4gPC0gcGhlYXRtYXA6OnBoZWF0bWFwKGFnZ19tYXRfbm9fZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3NjYWxlPSJyb3ciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNjb2xvciA9IGRpdmVyZ2luZ19oY2woMTAwLCBwYWxldHRlID0gIkJsdWUtUmVkIDMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyX2NvbHMgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyX3Jvd3MgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBvdGhlcnM6IHdhcmQuRDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2NsdXN0ZXJpbmdfbWV0aG9kPSJjb21wbGV0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19jb2xuYW1lcyA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsc19yb3cgPSBsYWJlbHMucm93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRzaXplX3JvdyA9IDE1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRzaXplID0gMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Fwc19jb2wgPSBjKGxlbmd0aChhc2V4X2NlbGxzKSwgbGVuZ3RoKGMoYXNleF9jZWxscyxiaV9jZWxscykpLCBsZW5ndGgoYyhhc2V4X2NlbGxzLGJpX2NlbGxzLGZlbWFsZV9jZWxscykpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uX2NvbCA9IGFubm9fbm9fZ3JvdXAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25fY29sb3JzID0gYW5ub3RhdGlvbl9jb2xvdXJzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXRyZWVfcm93cyA9IDYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCgojIyB2aWV3CmhlYXRtYXBfbWFpbgpgYGAKc2F2ZQpgYGB7cn0KZ2dzYXZlKCIuLi9pbWFnZXNfdG9fZXhwb3J0L0dDU0tPX3NleGJyYW5jaF9oZWF0bWFwLnBuZyIsIHBsb3QgPSBoZWF0bWFwX21haW4sIGRldmljZSA9ICJwbmciLCBwYXRoID0gTlVMTCwgc2NhbGUgPSAxLCB3aWR0aCA9IDIxLCBoZWlnaHQgPSAyMSwgdW5pdHMgPSAiY20iLCBkcGkgPSAzMDAsIGxpbWl0c2l6ZSA9IFRSVUUpCmBgYAoKIyMjIyBWaXN1YWxpc2UgdGhlIGV4cHJlc3Npb24gb2Ygc2VsZWN0IGdlbmVzIG92ZXIgcHNldWRvdGltZQoKYGBge3IsIGZpZy5oZWlnaHQgPSA4LCBmaWcud2lkdGggPSAxMH0KIyMgbGFuZG1hcmsgZ2VuZXMgKGdlbmVzIG9mIGludGVyZXN0KQojIEFQMkcgLSBQQkFOS0EtMTQzNzUwMAojIEFQMiAtIFBCQU5LQS0wOTA5NjAwIC0gZnJvbSBwb3JhbiBwYXBlcgojIEFQMkctMiAtIFBCQU5LQS0xMDM0MzAwIAojbGlzdF9vZl9tdXRhbnRfZ2VuZXMgPC0gYygiUEJBTktBLTA4MjgwMDAiLCAiUEJBTktBLTEzMDI3MDAiLCAiUEJBTktBLTE0NDc5MDAiLCAiUEJBTktBLTAxMDI0MDAiLCAiUEJBTktBLTA3MTY1MDAiLCAiUEJBTktBLTE0MzUyMDAiLCAiUEJBTktBLTE0MTgxMDAiLCAiUEJBTktBLTExNDQ4MDAiLCAiUEJBTktBLTA5MDIzMDAiLCAiUEJBTktBLTA0MTM0MDAiLCAiUEJBTktBLTE0NTQ4MDAiKQoKIyMgZGVmaW5lIGdlbmVzIHRvIHBsb3QKbGlzdF9vZl9nZW5lc19vZl9pbnRlcmVzdCA8LSBjKCJQQkFOS0EtMDEwMjQwMCIsICJQQkFOS0EtMDQxMzQwMCIsICJQQkFOS0EtMDcxNjUwMCIsICJQQkFOS0EtMDgyODAwMCIsICJQQkFOS0EtMDkwMjMwMCIsICJQQkFOS0EtMTE0NDgwMCIsICJQQkFOS0EtMTMwMjcwMCIsICJQQkFOS0EtMTQxODEwMCIsICJQQkFOS0EtMTQzNTIwMCIsICJQQkFOS0EtMTQ0NzkwMCIsICJQQkFOS0EtMTQ1NDgwMCIsICJQQkFOS0EtMTQzNzUwMCIsICJQQkFOS0EtMTMxOTUwMCIsICJQQkFOS0EtMDQxNjEwMCIsICJQQkFOS0EtMTAzNDMwMCIpCiMjIGFkZCBuYW1lcwpuYW1lc19vZl9nZW5lc19vZl9pbnRlcmVzdCA8LSBjKCJHQ1NLTy0yIiwgIkdDU0tPLTEwIiwgIkdDU0tPLTE5IiwgIkdDU0tPLTMiLCAiR0NTS08tMTMiLCAiR0NTS08tMjgiLCAiR0NTS08tb29tIiwgIkdDU0tPLTE3IiwgIkdDU0tPLTIwIiwgIkdDU0tPLTI5IiwgIkdDU0tPLTIxIiwgIkFQMi1HIiwgIkNDUDIiLCAiTUcxIiwgIkFQMi1HMiIpCgojI21ha2UgZGYgZm9yIGdlbmVzIG9mIGludGVyZXN0CmdlbmVzX29mX2ludGVyZXN0IDwtIGRhdGEuZnJhbWUoZ2VuZSA9IGxpc3Rfb2ZfZ2VuZXNfb2ZfaW50ZXJlc3QsIGdyb3VwID0gYygxOmxlbmd0aChsaXN0X29mX2dlbmVzX29mX2ludGVyZXN0KSksIG5hbWUgPSBuYW1lc19vZl9nZW5lc19vZl9pbnRlcmVzdCkKIyMgcmVvcmRlcgojZ2VuZXNfb2ZfaW50ZXJlc3QgPC0gZ2VuZXNfb2ZfaW50ZXJlc3RbbWF0Y2goYygiQVAyLUciLCAiQ0NQMiIsICJHQ1NLTy0yMSIsICJHQ1NLTy0xNyIsICJHQ1NLTy0yIiwgIk1HMSIsICJHQ1NLTy0yMCIsICJHQ1NLTy0zIiwgIkdDU0tPLW9vbSIsICJHQ1NLTy0yOSIsICJHQ1NLTy0xMCIsICJHQ1NLTy0yOCIsICJHQ1NLTy0xOSIsICJHQ1NLTy0xMyIpLCBnZW5lc19vZl9pbnRlcmVzdCRuYW1lKSwgXQoKIyMgcHJlcGFyZSBjdXN0b20gZGF0YWZyYW1lIGZvciBhbGwgY2VsbHMgYnkgbW9kdWxlczoKYWdnX21hdF9nZW5lc19vZl9pbnRlcmVzdCA8LSBhZ2dyZWdhdGVfZ2VuZV9leHByZXNzaW9uKG1vbm9jbGUub2JqZWN0LCBnZW5lc19vZl9pbnRlcmVzdFssMToyXSwgc2NhbGVfYWdnX3ZhbHVlcyA9IEZBTFNFKQoKIyMgcmVvcmRlciB1c2luZyBuZXcgb3JkZXIKYWdnX21hdF9nZW5lc19vZl9pbnRlcmVzdCA8LSBhZ2dfbWF0X2dlbmVzX29mX2ludGVyZXN0Wyxjb2wub3JkZXJdCgojIyBwbG90CmhlYXRtYXBfcGxvdCA8LSBwaGVhdG1hcDo6cGhlYXRtYXAoYWdnX21hdF9nZW5lc19vZl9pbnRlcmVzdCwgCiAgICAgICAgICAgICAgICAgICAjc2NhbGU9InJvdyIsCiAgICAgICAgICAgICAgICAgICBjbHVzdGVyX2NvbHMgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfcm93cyA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICBjbHVzdGVyaW5nX21ldGhvZD0id2FyZC5EMiIsCiAgICAgICAgICAgICAgICAgICBzaG93X2NvbG5hbWVzID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICBsYWJlbHNfcm93ID0gYXMuY2hhcmFjdGVyKGdlbmVzX29mX2ludGVyZXN0WywzXSksCiAgICAgICAgICAgICAgICAgICBnYXBzX2NvbCA9IGMobGVuZ3RoKGFzZXhfY2VsbHMpLCBsZW5ndGgoYyhhc2V4X2NlbGxzLGJpX2NlbGxzKSksIGxlbmd0aChjKGFzZXhfY2VsbHMsYmlfY2VsbHMsZmVtYWxlX2NlbGxzKSkpLAogICAgICAgICAgICAgICAgICAgI2dhcHNfcm93ID0gYygxLCA2KSwKICAgICAgICAgICAgICAgICAgIGN1dHJlZV9yb3dzID0gMywKICAgICAgICAgICAgICAgICAgICMjIHRyeWluZyB0byBmaXggbGVnZW5kIGlzc3VlIGhlcmUKICAgICAgICAgICAgICAgICAgICNmb250c2l6ZV9yb3cgPSAxMCwKICAgICAgICAgICAgICAgICAgICNmb250c2l6ZV9jb2wgPSAzLAogICAgICAgICAgICAgICAgICAgI2NlbGxoZWlnaHQ9MywgCiAgICAgICAgICAgICAgICAgICAjY2VsbHdpZHRoID0gMywKICAgICAgICAgICAgICAgICAgIGxlZ2VuZCA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uX2xlZ2VuZCA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbl9jb2wgPSBhbm5vX25vX2dyb3VwLCAKICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25fY29sb3JzID0gYW5ub3RhdGlvbl9jb2xvdXJzCiAgICAgICAgICAgICAgICAgICApCgpoZWF0bWFwX3Bsb3QKYGBgCgppbnZlc3RpZ2F0ZSBzcGVjaWZpYyBtb2R1bGVzCmBgYHtyfQojIyByZW5hbWUgZGYKZGZfc2NyZWVuX2hpdHNfc2VsZWN0ZWRfbW9kdWxlIDwtIGFzLmRhdGEuZnJhbWUoZ2VuZV9tb2R1bGVfZGZfc2V4W2dlbmVfbW9kdWxlX2RmX3NleCRtb2R1bGUgPT0gIjIwIiwgXSkKCiMjIG1lcmdlIGRmcyB0b2dldGhlcgptb2R1bGVfMjBfYW5ub3RhdGVkIDwtIG1lcmdlKGdlbmVfYW5ub3RhdGlvbnMsIGRmX3NjcmVlbl9oaXRzX3NlbGVjdGVkX21vZHVsZSxieS54ID0gIkdlbmUuSUQiLCBieS55ID0gImlkIikKCiMjIHZpZXcKVmlldyhtb2R1bGVfMjBfYW5ub3RhdGVkKQoKIyMgYW5ub3RhdGUgYWxsIG1vZHVsZXMKZ2VuZV9tb2R1bGVfZGZfc2V4X2Fubm90YXRlZCA8LSBtZXJnZShnZW5lX2Fubm90YXRpb25zLCBnZW5lX21vZHVsZV9kZl9zZXgsIGJ5LnggPSAiR2VuZS5JRCIsIGJ5LnkgPSAiaWQiKQpWaWV3KGdlbmVfbW9kdWxlX2RmX3NleF9hbm5vdGF0ZWQpCmBgYAoKIyA0LiBNYXBwaW5nIG9uIG11dGFudHMgey50YWJzZXR9CgpwY2EgcGxvdHMKYGBge3J9CkRpbVBsb3QodGVueC5qdXN0d3QuaW50ZWdyYXRlZC5zZXgsIHJlZHVjdGlvbiA9ICdwY2EnLCBncm91cC5ieSA9ICdtb25vY2xlX3NleCcpCmBgYAoKClNldXJhdCBtZXRob2QKCmBgYHtyfQpwYW5jcmVhcy5hbmNob3JzIDwtIEZpbmRUcmFuc2ZlckFuY2hvcnMocmVmZXJlbmNlID0gc2V1cmF0Lm9iamVjdCwgcXVlcnkgPSBTTUFSVFNFUSwgCiAgICBkaW1zID0gMTozMCkKcHJlZGljdGlvbnMgPC0gVHJhbnNmZXJEYXRhKGFuY2hvcnNldCA9IHBhbmNyZWFzLmFuY2hvcnMsIHJlZmRhdGEgPSBzZXVyYXQub2JqZWN0JG1vbm9jbGVfc2V4LCAKICAgIGRpbXMgPSAxOjMwKQpwYW5jcmVhcy5xdWVyeSA8LSBBZGRNZXRhRGF0YShwYW5jcmVhcy5xdWVyeSwgbWV0YWRhdGEgPSBwcmVkaWN0aW9ucykKYGBgCgoKCgojIEZpbmFsIEZpZ3VyZXMKCmBgYHtyfQojIyBDCiMjIFRoaXMgc2hvd3MgdGhlIGNlbGxzIHNlbGVjdGVkIGZvciBtb2R1bGUgYW5hbHlzaXMgCiMjIHRoaXMgcGFja2FnZSBhbGxvd3MgZWFzeSBleHRyYWN0aW9uIG9mIHZpcmlkaXMgdmFsdWVzIHVzZWQgaW4gdGhlIHB0IHBsb3RzCmxpYnJhcnkoImNvbG91cnZhbHVlcyIpICMgYWxsb3dzIAojIyBleHRyYWN0IGNvbG91ciBoZXggdmFsdWVzIAptb25vY2xlLm9iamVjdEBjb2xEYXRhJHB0X3NleF9jb2wgPC0gY29sb3VyX3ZhbHVlcyhtb25vY2xlLm9iamVjdEBjb2xEYXRhJHB0X3NleCwgcGFsZXR0ZSA9ICJwbGFzbWEiKQoKIyMgbG9hZCBpbiB0aGUgd2hvbGUgZGF0YXNldCBpZiB5b3UgaGF2ZW4ndCBhbHJlYWR5IGxvYWRlZCBpdCBpbgojdGVueC5qdXN0d3QuaW50ZWdyYXRlZCA8LSByZWFkUkRTKCIuLi9kYXRhX3RvX2V4cG9ydC90ZW54Lmp1c3R3dC5pbnRlZ3JhdGVkLlJEUyIpCgojIyBleHRyYWN0IG1ldGFkYXRhCmRmX3Bsb3QgPC0gdGVueC5qdXN0d3QuaW50ZWdyYXRlZEBtZXRhLmRhdGEKCiMjIGFkZCB1bWFwIC0gbWVyZ2Ugb24gcm93IG5hbWVzIGFuZCB0aGVuIG1ha2Ugc3VyZSByb3cgbmFtZXMgYXJlIG5vdCBkcm9wcGVkIG9yIGFkZGVkCmRmX3Bsb3QgPC0gdHJhbnNmb3JtKG1lcmdlKGRmX3Bsb3QsIHRlbnguanVzdHd0LmludGVncmF0ZWRAcmVkdWN0aW9uc1tbInVtYXAiXV1AY2VsbC5lbWJlZGRpbmdzLCBieT0wLCBhbGw9VFJVRSksIHJvdy5uYW1lcz1Sb3cubmFtZXMsIFJvdy5uYW1lcz1OVUxMKQoKIyMgbWFrZSBuZXcgY29sIGZvciBjb2xvdXJzIC0gYW5kIG1ha2UgZXZlcnl0aGluZyBncmV5CmRmX3Bsb3QkaGV4IDwtICIjZTdlN2U3IgoKIyMgZXh0cmFjdCBjb2xvdXJzIGZvciBoaWdobGlnaHRlZCBjZWxscyAKZGZfcGxvdF8yIDwtIGFzLmRhdGEuZnJhbWUobW9ub2NsZS5vYmplY3RAY29sRGF0YVssInB0X3NleF9jb2wiLCBkcm9wID0gRkFMU0VdKQoKIyMgdGhlbiBtZXJnZSB0aGlzIGJhY2sgaW50byB0aGUgY29sb3VyIGNvbHVtbiwgd2hpbHN0IG1hdGNoaW5nIHRoZSByb3dzCnJvd25hbWVzX3RvX21hdGNoIDwtIHJvd25hbWVzKGRmX3Bsb3Rbcm93bmFtZXMoZGZfcGxvdCkgJWluJSByb3duYW1lcyhkZl9wbG90XzIpLCBdKQoKZGZfcGxvdCRoZXhbcm93bmFtZXMoZGZfcGxvdCkgJWluJSByb3duYW1lcyhkZl9wbG90XzIpXSA8LSBkZl9wbG90XzJbbWF0Y2gocm93bmFtZXNfdG9fbWF0Y2gsIHJvd25hbWVzKGRmX3Bsb3RfMikpLCAsIGRyb3AgPSBGQUxTRV1bICwxXQoKIyMjIG1ha2UgY2hhcmFjdGVyIHNvIGdncGx0bzIgcmVjb2duaXNlcyB0aGVtCmRmX3Bsb3QkaGV4IDwtIGFzLmNoYXJhY3RlcihkZl9wbG90JGhleCkKCiMjIHJlb3JkZXIgc28gdGhhdCB0aGUgdm9sb3VyZWQgcG9pbnRzIGFyZSBvbiB0b3AKIyMgdGhpcyBpcyBhIGJpdCBoYWNreSBidXQgeW91IGNhbiBzcGxpdCB0aGUgZGF0YSBmcmFtZSBhbmQgdGhlbiByZW1lcmdlLCBzaW5jZSB0aGUgY29tbWFuZCBjb21tZW50ZWQgb3V0IHdpbGwgc3RpbGwgcHV0IEUgYWJvdmUgb3RoZXIgdmFsdWVzIC0gdGhpcyBjb21tYW5kIHdhcyBqdXN0IG9yZGVyIGJ5IHRoZSBjb2wgaGV4CmRmX3Bsb3RfMSA8LSBkZl9wbG90WyEoZGZfcGxvdCRoZXggPT0gIiNlN2U3ZTciKSwgXQpkZl9wbG90XzIgPC0gZGZfcGxvdFsoZGZfcGxvdCRoZXggPT0gIiNlN2U3ZTciKSwgXQpkZl9wbG90IDwtIHJiaW5kKGRmX3Bsb3RfMiwgZGZfcGxvdF8xKQpybShkZl9wbG90XzIsIGRmX3Bsb3RfMSkKCiMjIGFkZCB0cmVlCiMjVGhlIHRyZWUgZm9yIG1vbm9jbGUgaXMgbG9jYXRlZCBoZXJlOgojIG1vbm9jbGUub2JqZWN0QHByaW5jaXBhbF9ncmFwaF9hdXhbWyJVTUFQIl1dJGRwX21zdCAKaWNhX3NwYWNlX2RmIDwtIHQobW9ub2NsZS5vYmplY3RAcHJpbmNpcGFsX2dyYXBoX2F1eFtbIlVNQVAiXV0kZHBfbXN0KSAlPiUKICAgICAgYXMuZGF0YS5mcmFtZSgpICU+JQogICAgICBkcGx5cjo6c2VsZWN0XyhwcmluX2dyYXBoX2RpbV8xID0gIlVNQVBfMSIsIHByaW5fZ3JhcGhfZGltXzIgPSAiVU1BUF8yIikgJT4lCiAgICAgIGRwbHlyOjptdXRhdGUoc2FtcGxlX25hbWUgPSByb3duYW1lcyguKSwKICAgICAgICAgICAgICAgICAgICBzYW1wbGVfc3RhdGUgPSByb3duYW1lcyguKSkKCmRwX21zdCA8LSBtb25vY2xlLm9iamVjdEBwcmluY2lwYWxfZ3JhcGhbWyJVTUFQIl1dCgplZGdlX2RmIDwtIGRwX21zdCAlPiUKICAgICAgaWdyYXBoOjphc19kYXRhX2ZyYW1lKCkgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3RfKHNvdXJjZSA9ICJmcm9tIiwgdGFyZ2V0ID0gInRvIikgJT4lCiAgICAgIGRwbHlyOjpsZWZ0X2pvaW4oaWNhX3NwYWNlX2RmICU+JQogICAgICAgICAgICAgICAgICAgICAgICAgZHBseXI6OnNlbGVjdF8oCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT0ic2FtcGxlX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcHJpbl9ncmFwaF9kaW1fMT0icHJpbl9ncmFwaF9kaW1fMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wcmluX2dyYXBoX2RpbV8yPSJwcmluX2dyYXBoX2RpbV8yIiksCiAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAic291cmNlIikgJT4lCiAgICAgIGRwbHlyOjpsZWZ0X2pvaW4oaWNhX3NwYWNlX2RmICU+JQogICAgICAgICAgICAgICAgICAgICAgICAgZHBseXI6OnNlbGVjdF8oCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD0ic2FtcGxlX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcHJpbl9ncmFwaF9kaW1fMT0icHJpbl9ncmFwaF9kaW1fMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9wcmluX2dyYXBoX2RpbV8yPSJwcmluX2dyYXBoX2RpbV8yIiksCiAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAidGFyZ2V0IikKCgp1bWFwX3pvb21fcGxvdCA8LSBnZ3Bsb3QoZGZfcGxvdCwgYWVzKHggPSBVTUFQXzEsIHkgPSBVTUFQXzIsIGNvbG91ciA9IGhleCkpICsKICAgICAgICAgICAgICAgICAgICAgICAgIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsKICAgICAgICAgICAgICAgICAgICAgICAgIyMgbmVlZCB0aGlzIHRvIHRlbGwgZ2dwbG90MiB0byBtYXAgdG8gdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZV9jb2xvdXJfaWRlbnRpdHkoKSArCiAgICAgICAgICAgICAgICAgICAgICAgICMjIGZpeCBjb29yZGluYXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRfZml4ZWQoKSArCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZV92b2lkKCkgKyAKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogICAgICAgICAgICAgICAgICAgICAgICAgZ2VvbV9zZWdtZW50KGFlc19zdHJpbmcoeD0ic291cmNlX3ByaW5fZ3JhcGhfZGltXzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeT0ic291cmNlX3ByaW5fZ3JhcGhfZGltXzIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuZD0idGFyZ2V0X3ByaW5fZ3JhcGhfZGltXzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVuZD0idGFyZ2V0X3ByaW5fZ3JhcGhfZGltXzIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZWRnZV9kZiwgaW5oZXJpdC5hZXMgPSBGQUxTRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAKICAKdW1hcF96b29tX3Bsb3QKCiMjIHJlbW92ZSBiaWcgZGF0YXNldAojcm0odGVueC5qdXN0d3QuaW50ZWdyYXRlZCkKYGBgCgpgYGB7cn0KIyBFeHRyYWN0IHRoZSBsZWdlbmQuIFJldHVybnMgYSBndGFibGUKbGVnIDwtIGdldF9sZWdlbmQodW1hcF9wdCkKCiMgQ29udmVydCB0byBhIGdncGxvdCBhbmQgcHJpbnQKbGVnZW5kX2QgPC0gYXNfZ2dwbG90KGxlZykKCmxlZ2VuZF9kCmBgYAoKc2F2ZQpgYGB7cn0KZ2dzYXZlKCIuLi9pbWFnZXNfdG9fZXhwb3J0L0ZpZ3VyZV9ELnBuZyIsIHBsb3QgPSB1bWFwX3pvb21fcGxvdCwgZGV2aWNlID0gInBuZyIsIHBhdGggPSBOVUxMLCBzY2FsZSA9IDEsIHdpZHRoID0gMjEsIGhlaWdodCA9IDI5LjcsIHVuaXRzID0gImNtIiwgZHBpID0gMzAwLCBsaW1pdHNpemUgPSBUUlVFKQpnZ3NhdmUoIi4uL2ltYWdlc190b19leHBvcnQvRmlndXJlX0RfbGVnZW5kLnBuZyIsIHBsb3QgPSBsZWdlbmRfZCwgZGV2aWNlID0gInBuZyIsIHBhdGggPSBOVUxMLCBzY2FsZSA9IDEsIHdpZHRoID0gMjEsIGhlaWdodCA9IDI5LjcsIHVuaXRzID0gImNtIiwgZHBpID0gMzAwLCBsaW1pdHNpemUgPSBUUlVFKQpgYGAKCmBgYHtyfQojIyBDCiMjIFRoaXMgc2hvd3MgdGhlIGNlbGxzIHNlbGVjdGVkIGZvciBtb2R1bGUgYW5hbHlzaXMgCiMjIHRoaXMgcGFja2FnZSBhbGxvd3MgZWFzeSBleHRyYWN0aW9uIG9mIHZpcmlkaXMgdmFsdWVzIHVzZWQgaW4gdGhlIHB0IHBsb3RzCmxpYnJhcnkoImNvbG91cnZhbHVlcyIpICMgYWxsb3dzIAojIyBleHRyYWN0IGNvbG91ciBoZXggdmFsdWVzIAptb25vY2xlLm9iamVjdEBjb2xEYXRhJHJ0X3NleF9jb2wgPC0gY29sb3VyX3ZhbHVlcyhtb25vY2xlLm9iamVjdEBjb2xEYXRhJFByZWRpY3Rpb24uU3BlYXJtYW4uLCBwYWxldHRlID0gInZpcmlkaXMiKQoKIyMgbG9hZCBpbiB0aGUgd2hvbGUgZGF0YXNldCBpZiB5b3UgaGF2ZW4ndCBhbHJlYWR5IGxvYWRlZCBpdCBpbgojdGVueC5qdXN0d3QuaW50ZWdyYXRlZCA8LSByZWFkUkRTKCIuLi9kYXRhX3RvX2V4cG9ydC90ZW54Lmp1c3R3dC5pbnRlZ3JhdGVkLlJEUyIpCgojIyBleHRyYWN0IG1ldGFkYXRhCmRmX3Bsb3QgPC0gdGVueC5qdXN0d3QuaW50ZWdyYXRlZEBtZXRhLmRhdGEKCiMjIGFkZCB1bWFwIC0gbWVyZ2Ugb24gcm93IG5hbWVzIGFuZCB0aGVuIG1ha2Ugc3VyZSByb3cgbmFtZXMgYXJlIG5vdCBkcm9wcGVkIG9yIGFkZGVkCmRmX3Bsb3QgPC0gdHJhbnNmb3JtKG1lcmdlKGRmX3Bsb3QsIHRlbnguanVzdHd0LmludGVncmF0ZWRAcmVkdWN0aW9uc1tbInVtYXAiXV1AY2VsbC5lbWJlZGRpbmdzLCBieT0wLCBhbGw9VFJVRSksIHJvdy5uYW1lcz1Sb3cubmFtZXMsIFJvdy5uYW1lcz1OVUxMKQoKIyMgbWFrZSBuZXcgY29sIGZvciBjb2xvdXJzIC0gYW5kIG1ha2UgZXZlcnl0aGluZyBncmV5CmRmX3Bsb3QkaGV4IDwtICIjZTdlN2U3IgoKIyMgZXh0cmFjdCBjb2xvdXJzIGZvciBoaWdobGlnaHRlZCBjZWxscyAKZGZfcGxvdF8yIDwtIGFzLmRhdGEuZnJhbWUobW9ub2NsZS5vYmplY3RAY29sRGF0YVssInJ0X3NleF9jb2wiLCBkcm9wID0gRkFMU0VdKQoKIyMgdGhlbiBtZXJnZSB0aGlzIGJhY2sgaW50byB0aGUgY29sb3VyIGNvbHVtbiwgd2hpbHN0IG1hdGNoaW5nIHRoZSByb3dzCnJvd25hbWVzX3RvX21hdGNoIDwtIHJvd25hbWVzKGRmX3Bsb3Rbcm93bmFtZXMoZGZfcGxvdCkgJWluJSByb3duYW1lcyhkZl9wbG90XzIpLCBdKQoKZGZfcGxvdCRoZXhbcm93bmFtZXMoZGZfcGxvdCkgJWluJSByb3duYW1lcyhkZl9wbG90XzIpXSA8LSBkZl9wbG90XzJbbWF0Y2gocm93bmFtZXNfdG9fbWF0Y2gsIHJvd25hbWVzKGRmX3Bsb3RfMikpLCAsIGRyb3AgPSBGQUxTRV1bICwxXQoKIyMjIG1ha2UgY2hhcmFjdGVyIHNvIGdncGx0bzIgcmVjb2duaXNlcyB0aGVtCmRmX3Bsb3QkaGV4IDwtIGFzLmNoYXJhY3RlcihkZl9wbG90JGhleCkKCiMjIHJlb3JkZXIgc28gdGhhdCB0aGUgdm9sb3VyZWQgcG9pbnRzIGFyZSBvbiB0b3AKIyMgdGhpcyBpcyBhIGJpdCBoYWNreSBidXQgeW91IGNhbiBzcGxpdCB0aGUgZGF0YSBmcmFtZSBhbmQgdGhlbiByZW1lcmdlLCBzaW5jZSB0aGUgY29tbWFuZCBjb21tZW50ZWQgb3V0IHdpbGwgc3RpbGwgcHV0IEUgYWJvdmUgb3RoZXIgdmFsdWVzIC0gdGhpcyBjb21tYW5kIHdhcyBqdXN0IG9yZGVyIGJ5IHRoZSBjb2wgaGV4CmRmX3Bsb3RfMSA8LSBkZl9wbG90WyEoZGZfcGxvdCRoZXggPT0gIiNlN2U3ZTciKSwgXQpkZl9wbG90XzIgPC0gZGZfcGxvdFsoZGZfcGxvdCRoZXggPT0gIiNlN2U3ZTciKSwgXQpkZl9wbG90IDwtIHJiaW5kKGRmX3Bsb3RfMiwgZGZfcGxvdF8xKQpybShkZl9wbG90XzIsIGRmX3Bsb3RfMSkKCnVtYXBfem9vbV9wbG90X3J0IDwtIGdncGxvdChkZl9wbG90LCBhZXMoeCA9IFVNQVBfMSwgeSA9IFVNQVBfMiwgY29sb3VyID0gaGV4KSkgKwogICAgICAgICAgICAgICAgICAgICAgICAgZ2VvbV9wb2ludChzaXplID0gMikgKwogICAgICAgICAgICAgICAgICAgICAgICAjIyBuZWVkIHRoaXMgdG8gdGVsbCBnZ3Bsb3QyIHRvIG1hcCB0byB2YWx1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlX2NvbG91cl9pZGVudGl0eShndWlkZSA9ICJsZWdlbmQiKSArCiAgICAgICAgICAgICAgICAgICAgICAgICMjIGZpeCBjb29yZGluYXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRfZml4ZWQoKQogIAojIEV4dHJhY3QgdGhlIGxlZ2VuZC4gUmV0dXJucyBhIGd0YWJsZQpsZWcgPC0gZ2V0X2xlZ2VuZCh1bWFwX3pvb21fcGxvdF9ydCkKCiMgQ29udmVydCB0byBhIGdncGxvdCBhbmQgcHJpbnQKbGVnZW5kX2QgPC0gYXNfZ2dwbG90KGxlZykKCmxlZ2VuZF9kCiAgCnVtYXBfem9vbV9wbG90X3J0K3RoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWVfdm9pZCgpCgojIyByZW1vdmUgYmlnIGRhdGFzZXQKI3JtKHRlbnguanVzdHd0LmludGVncmF0ZWQpCmBgYAoKYGBge3J9CiMjIGV4dHJhY3QgbWV0YWRhdGEKZGZfcGxvdCA8LSB0ZW54Lmp1c3R3dC5pbnRlZ3JhdGVkQG1ldGEuZGF0YQoKIyMgYWRkIHVtYXAgLSBtZXJnZSBvbiByb3cgbmFtZXMgYW5kIHRoZW4gbWFrZSBzdXJlIHJvdyBuYW1lcyBhcmUgbm90IGRyb3BwZWQgb3IgYWRkZWQKZGZfcGxvdCA8LSB0cmFuc2Zvcm0obWVyZ2UoZGZfcGxvdCwgdGVueC5qdXN0d3QuaW50ZWdyYXRlZEByZWR1Y3Rpb25zW1sidW1hcCJdXUBjZWxsLmVtYmVkZGluZ3MsIGJ5PTAsIGFsbD1UUlVFKSwgcm93Lm5hbWVzPVJvdy5uYW1lcywgUm93Lm5hbWVzPU5VTEwpCgojIyBtYWtlIG5ldyBjb2wgZm9yIGNvbG91cnMgLSBhbmQgbWFrZSBldmVyeXRoaW5nIGdyZXkKZGZfcGxvdCRoZXggPC0gIiNlN2U3ZTciCgojIyBleHRyYWN0IGNvbG91cnMgZm9yIGhpZ2hsaWdodGVkIGNlbGxzIApkZl9wbG90XzIgPC0gYXMuZGF0YS5mcmFtZShtb25vY2xlLm9iamVjdEBjb2xEYXRhWywibW9ub2NsZV9zZXgiLCBkcm9wID0gRkFMU0VdKQoKIyMgdGhlbiBtZXJnZSB0aGlzIGJhY2sgaW50byB0aGUgY29sb3VyIGNvbHVtbiwgd2hpbHN0IG1hdGNoaW5nIHRoZSByb3dzCnJvd25hbWVzX3RvX21hdGNoIDwtIHJvd25hbWVzKGRmX3Bsb3Rbcm93bmFtZXMoZGZfcGxvdCkgJWluJSByb3duYW1lcyhkZl9wbG90XzIpLCBdKQoKZGZfcGxvdCRoZXhbcm93bmFtZXMoZGZfcGxvdCkgJWluJSByb3duYW1lcyhkZl9wbG90XzIpXSA8LSBkZl9wbG90XzJbbWF0Y2gocm93bmFtZXNfdG9fbWF0Y2gsIHJvd25hbWVzKGRmX3Bsb3RfMikpLCAsIGRyb3AgPSBGQUxTRV1bICwxXQoKIyMgYWRkIGFjdHVhbCBjb2xvdXJzIGZvciBzZXhlcwojIDEgPSBibHVlIC0gIiMwMDUyYzUiCiMgMiA9IHJlZCAtICIjYTUyYjFlIgojIDMgPSBncmVlbiAtICIjMDE2YzAwIgojIDQgPSB5ZWxsb3cgLSAiI2ZmZTQwMCIKI3BhbF9zZXggPC0gYygiIzAwNTJjNSIsIiNmZmU0MDAiLCAiI2E1MmIxZSIsICIjMDE2YzAwIikKZGZfcGxvdCRoZXhbZGZfcGxvdCRoZXggPT0gIk1hbGUiXSA8LSAiIzAxNmMwMCIKZGZfcGxvdCRoZXhbZGZfcGxvdCRoZXggPT0gIkZlbWFsZSJdIDwtICIjYTUyYjFlIgpkZl9wbG90JGhleFtkZl9wbG90JGhleCA9PSAiQmlwb3RlbnRpYWwiXSA8LSAiI2ZmZTQwMCIKZGZfcGxvdCRoZXhbZGZfcGxvdCRoZXggPT0gIkFzZXh1YWxfRWFybHkiXSA8LSAiIzAwNTJjNSIKCiMjIyBtYWtlIGNoYXJhY3RlciBzbyBnZ3BsdG8yIHJlY29nbmlzZXMgdGhlbQpkZl9wbG90JGhleCA8LSBhcy5jaGFyYWN0ZXIoZGZfcGxvdCRoZXgpCgojIyByZW9yZGVyIHNvIHRoYXQgdGhlIHZvbG91cmVkIHBvaW50cyBhcmUgb24gdG9wCiMjIHRoaXMgaXMgYSBiaXQgaGFja3kgYnV0IHlvdSBjYW4gc3BsaXQgdGhlIGRhdGEgZnJhbWUgYW5kIHRoZW4gcmVtZXJnZSwgc2luY2UgdGhlIGNvbW1hbmQgY29tbWVudGVkIG91dCB3aWxsIHN0aWxsIHB1dCBFIGFib3ZlIG90aGVyIHZhbHVlcyAtIHRoaXMgY29tbWFuZCB3YXMganVzdCBvcmRlciBieSB0aGUgY29sIGhleApkZl9wbG90XzEgPC0gZGZfcGxvdFshKGRmX3Bsb3QkaGV4ID09ICIjZTdlN2U3IiksIF0KZGZfcGxvdF8yIDwtIGRmX3Bsb3RbKGRmX3Bsb3QkaGV4ID09ICIjZTdlN2U3IiksIF0KZGZfcGxvdCA8LSByYmluZChkZl9wbG90XzIsIGRmX3Bsb3RfMSkKcm0oZGZfcGxvdF8yLCBkZl9wbG90XzEpCgp1bWFwX3pvb21fcGxvdF9ydCA8LSBnZ3Bsb3QoZGZfcGxvdCwgYWVzKHggPSBVTUFQXzEsIHkgPSBVTUFQXzIsIGNvbG91ciA9IGhleCkpICsKICAgICAgICAgICAgICAgICAgICAgICAgIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsKICAgICAgICAgICAgICAgICAgICAgICAgIyMgbmVlZCB0aGlzIHRvIHRlbGwgZ2dwbG90MiB0byBtYXAgdG8gdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZV9jb2xvdXJfaWRlbnRpdHkoZ3VpZGUgPSAibGVnZW5kIikgKwogICMjIG1ha2UgcG9pbnRzIGJpZ2dlcgogICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGVzKGNvbG91ciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemUgPSA1KSkpICsKICAgICAgICAgICAgICAgICAgICAgICAgIyMgZml4IGNvb3JkaW5hdGVzCiAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZF9maXhlZCgpCiAgCiMgRXh0cmFjdCB0aGUgbGVnZW5kLiBSZXR1cm5zIGEgZ3RhYmxlCiNsZWcgPC0gZ2V0X2xlZ2VuZCh1bWFwX3pvb21fcGxvdF9ydCkKCiMgQ29udmVydCB0byBhIGdncGxvdCBhbmQgcHJpbnQKI2xlZ2VuZF9kIDwtIGFzX2dncGxvdChsZWcpCgojbGVnZW5kX2QKICAKdW1hcF96b29tX3Bsb3RfcnQgPC0gdW1hcF96b29tX3Bsb3RfcnQgKyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpKyAgdGhlbWVfdm9pZCgpCgp1bWFwX3pvb21fcGxvdF9ydAoKIyMgcmVtb3ZlIGJpZyBkYXRhc2V0CiNybSh0ZW54Lmp1c3R3dC5pbnRlZ3JhdGVkKQpgYGAKc2F2ZQpgYGB7cn0KZ2dzYXZlKCIuLi9pbWFnZXNfdG9fZXhwb3J0L1VNQVBfc2V4X2lkLnBuZyIsIHBsb3QgPSB1bWFwX3pvb21fcGxvdF9ydCwgZGV2aWNlID0gInBuZyIsIHBhdGggPSBOVUxMLCBzY2FsZSA9IDEsIHdpZHRoID0gMjEsIGhlaWdodCA9IDI5LjcsIHVuaXRzID0gImNtIiwgZHBpID0gMzAwLCBsaW1pdHNpemUgPSBUUlVFKQpgYGAKCmBgYHtyfQojIDEgPSBibHVlIC0gIiMwMDUyYzUiCiMgMiA9IHJlZCAtICIjYTUyYjFlIgojIDMgPSBncmVlbiAtICIjMDE2YzAwIgojIDQgPSB5ZWxsb3cgLSAiI2ZmZTQwMCIKI3BhbF9zZXggPC0gYygiIzAwNTJjNSIsIiNmZmU0MDAiLCAiI2E1MmIxZSIsICIjMDE2YzAwIikKCiMjIGV4dHJhY3QgcHNldWRvdGltZSBudW1iZXJzIGFuZCBpZGVudGl0eSBvZiBjZWxscyB0byBhIGRhdGFmcmFtZQpkZl9wdF9pZCA8LSBhcy5kYXRhLmZyYW1lKG1vbm9jbGUub2JqZWN0QGNvbERhdGFbLGMoInB0X3NleCIsICJtb25vY2xlX3NleCIpXSkKCiMjIGluc3BlY3QgcG9zc2libGUgdmFsdWVzCmxpc3Rfb2Zfc2V4ZXMgPC0gbmFtZXModGFibGUoZGZfcHRfaWQkbW9ub2NsZV9zZXgpKQoKIyMgbWFrZSBhIG5ldyBjb2x1bW4KZGZfcHRfaWQkY29sb3VyIDwtIE5BCgojIyBtYWtlIGNvbG91ciByYW1wcwphc2V4X3JhbXAgPC0gY29sb3JSYW1wUGFsZXR0ZShjKCIjRDVFM0Y1IiwgIiMwMDUyYzUiKSkKbWFsZV9yYW1wIDwtIGNvbG9yUmFtcFBhbGV0dGUoYygiI0FCRERCRiIsICIjMDE2YzAwIikpCmZlbWFsZV9yYW1wIDwtIGNvbG9yUmFtcFBhbGV0dGUoYygiI0Y0QzFCRSIsICIjYTUyYjFlIikpCmJpcG90X3JhbXAgPC0gY29sb3JSYW1wUGFsZXR0ZShjKCJ3aGl0ZSIsICIjZmZlNDAwIikpCgojIyByZS1jbGFzc2lmeSB0aGUgY2VsbHMgdGhhdCBhcmUgdW5hc3NpZ25lZCBjZWxscyByZW1vdmVkIGZyb20gc2V4dWFsIGJyYW5jaCBhYm92ZToKI2RmX3B0X2lkW3doaWNoKHJvd25hbWVzKGRmX3B0X2lkKSAlaW4lIHJlbW92ZV9jZWxscyksIF0kbW9ub2NsZV9zZXggPC0gIkFzZXh1YWwiCgojIyBhc3NpZ24gdmFsdWVzIHRvIGVhY2ggY2x1c3RlcgojIyBoZWxwIGhlcmU6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzk5NDY2MzAvY29sb3VyLXBvaW50cy1pbi1hLXBsb3QtZGlmZmVyZW50bHktZGVwZW5kaW5nLW9uLWEtdmVjdG9yLW9mLXZhbHVlcyAKZGZfcHRfaWRbZGZfcHRfaWQkbW9ub2NsZV9zZXggPT0gIkFzZXh1YWxfRWFybHkiIHwgZGZfcHRfaWQkbW9ub2NsZV9zZXggPT0gIkFzZXh1YWxfTGF0ZSIsIF0kY29sb3VyIDwtIGFzZXhfcmFtcCgxMDApW2FzLm51bWVyaWMoY3V0KGRmX3B0X2lkW2RmX3B0X2lkJG1vbm9jbGVfc2V4ID09ICJBc2V4dWFsX0Vhcmx5IiB8IGRmX3B0X2lkJG1vbm9jbGVfc2V4ID09ICJBc2V4dWFsX0xhdGUiLCBdJHB0X3NleCxicmVha3MgPSAxMDApKV0KCmRmX3B0X2lkW2RmX3B0X2lkJG1vbm9jbGVfc2V4ID09ICJNYWxlIiwgXSRjb2xvdXIgPC0gbWFsZV9yYW1wKDEwMClbYXMubnVtZXJpYyhjdXQoZGZfcHRfaWRbZGZfcHRfaWQkbW9ub2NsZV9zZXggPT0gIk1hbGUiLCBdJHB0X3NleCxicmVha3MgPSAxMDApKV0KCmRmX3B0X2lkW2RmX3B0X2lkJG1vbm9jbGVfc2V4ID09ICJGZW1hbGUiLCBdJGNvbG91ciA8LSBmZW1hbGVfcmFtcCgxMDApW2FzLm51bWVyaWMoY3V0KGRmX3B0X2lkW2RmX3B0X2lkJG1vbm9jbGVfc2V4ID09ICJGZW1hbGUiLCBdJHB0X3NleCxicmVha3MgPSAxMDApKV0KCmRmX3B0X2lkW2RmX3B0X2lkJG1vbm9jbGVfc2V4ID09ICJCaXBvdGVudGlhbCIsIF0kY29sb3VyIDwtIGJpcG90X3JhbXAoMTAwKVthcy5udW1lcmljKGN1dChkZl9wdF9pZFtkZl9wdF9pZCRtb25vY2xlX3NleCA9PSAiQmlwb3RlbnRpYWwiLCBdJHB0X3NleCxicmVha3MgPSAxMDApKV0KCiMjIEFERCBUTyBCSUcgT0JKRUNUCgojIyBleHRyYWN0IG1ldGFkYXRhCmRmX3Bsb3QgPC0gdGVueC5qdXN0d3QuaW50ZWdyYXRlZEBtZXRhLmRhdGEKCiMjIGFkZCB1bWFwIC0gbWVyZ2Ugb24gcm93IG5hbWVzIGFuZCB0aGVuIG1ha2Ugc3VyZSByb3cgbmFtZXMgYXJlIG5vdCBkcm9wcGVkIG9yIGFkZGVkCmRmX3Bsb3QgPC0gdHJhbnNmb3JtKG1lcmdlKGRmX3Bsb3QsIHRlbnguanVzdHd0LmludGVncmF0ZWRAcmVkdWN0aW9uc1tbInVtYXAiXV1AY2VsbC5lbWJlZGRpbmdzLCBieT0wLCBhbGw9VFJVRSksIHJvdy5uYW1lcz1Sb3cubmFtZXMsIFJvdy5uYW1lcz1OVUxMKQoKIyMgbWFrZSBuZXcgY29sIGZvciBjb2xvdXJzIC0gYW5kIG1ha2UgZXZlcnl0aGluZyBncmV5CmRmX3Bsb3QkaGV4IDwtICIjZTdlN2U3IgoKIyMgZXh0cmFjdCBjb2xvdXJzIGZvciBoaWdobGlnaHRlZCBjZWxscyAKZGZfcGxvdF8yIDwtIGFzLmRhdGEuZnJhbWUoZGZfcHRfaWRbLCJjb2xvdXIiLCBkcm9wID0gRkFMU0VdKQoKIyMgdGhlbiBtZXJnZSB0aGlzIGJhY2sgaW50byB0aGUgY29sb3VyIGNvbHVtbiwgd2hpbHN0IG1hdGNoaW5nIHRoZSByb3dzCnJvd25hbWVzX3RvX21hdGNoIDwtIHJvd25hbWVzKGRmX3Bsb3Rbcm93bmFtZXMoZGZfcGxvdCkgJWluJSByb3duYW1lcyhkZl9wbG90XzIpLCBdKQoKZGZfcGxvdCRoZXhbcm93bmFtZXMoZGZfcGxvdCkgJWluJSByb3duYW1lcyhkZl9wbG90XzIpXSA8LSBkZl9wbG90XzJbbWF0Y2gocm93bmFtZXNfdG9fbWF0Y2gsIHJvd25hbWVzKGRmX3Bsb3RfMikpLCAsIGRyb3AgPSBGQUxTRV1bICwxXQoKIyMjIG1ha2UgY2hhcmFjdGVyIHNvIGdncGx0bzIgcmVjb2duaXNlcyB0aGVtCmRmX3Bsb3QkaGV4IDwtIGFzLmNoYXJhY3RlcihkZl9wbG90JGhleCkKCiMjIHJlb3JkZXIgc28gdGhhdCB0aGUgdm9sb3VyZWQgcG9pbnRzIGFyZSBvbiB0b3AKIyMgdGhpcyBpcyBhIGJpdCBoYWNreSBidXQgeW91IGNhbiBzcGxpdCB0aGUgZGF0YSBmcmFtZSBhbmQgdGhlbiByZW1lcmdlLCBzaW5jZSB0aGUgY29tbWFuZCBjb21tZW50ZWQgb3V0IHdpbGwgc3RpbGwgcHV0IEUgYWJvdmUgb3RoZXIgdmFsdWVzIC0gdGhpcyBjb21tYW5kIHdhcyBqdXN0IG9yZGVyIGJ5IHRoZSBjb2wgaGV4CmRmX3Bsb3RfMSA8LSBkZl9wbG90WyEoZGZfcGxvdCRoZXggPT0gIiNlN2U3ZTciKSwgXQpkZl9wbG90XzIgPC0gZGZfcGxvdFsoZGZfcGxvdCRoZXggPT0gIiNlN2U3ZTciKSwgXQpkZl9wbG90IDwtIHJiaW5kKGRmX3Bsb3RfMiwgZGZfcGxvdF8xKQpybShkZl9wbG90XzIsIGRmX3Bsb3RfMSkKCiMjIG1ha2UgZ2dwbG90CnVtYXBfaWRfcHQgPC0gZ2dwbG90KGRmX3Bsb3QsIGFlcyh4ID0gVU1BUF8xLCB5ID0gVU1BUF8yKSkgKyAKICAgICAgICAgICAgICAgICAgICAgZ2VvbV9wb2ludChjb2wgPSBkZl9wbG90JGhleCkgKwogICAgICAgICAgICAgICAgICAgICB0aGVtZV92b2lkKCkgKwogICAgICAgICAgICAgICAgICAgICBjb29yZF9maXhlZCgpCgp1bWFwX2lkX3B0CmBgYAoKc2F2ZQpgYGB7cn0KZ2dzYXZlKCIuLi9pbWFnZXNfdG9fZXhwb3J0L1VNQVBfc2V4X2lkX3B0LnBuZyIsIHBsb3QgPSB1bWFwX2lkX3B0LCBkZXZpY2UgPSAicG5nIiwgcGF0aCA9IE5VTEwsIHNjYWxlID0gMSwgd2lkdGggPSAyMSwgaGVpZ2h0ID0gMjkuNywgdW5pdHMgPSAiY20iLCBkcGkgPSAzMDAsIGxpbWl0c2l6ZSA9IFRSVUUpCmBgYAoKc2F2ZSBtb2R1bGVzCmBgYHtyfQojIyBtb2R1bGVzIGFyZSBsb2NhdGVkIGluIHRoaXMgb2JqZWN0OgojIGdlbmVfbW9kdWxlX2RmX3NleAp3cml0ZS5jc3YoZ2VuZV9tb2R1bGVfZGZfc2V4LCBmaWxlID0gIi4uL2RhdGFfdG9fZXhwb3J0L2dlbmVfbW9kdWxlX2RmX3NleC5jc3YiKQpgYGAKCgojIEFwcGVuZGl4IHsudGFic2V0fQoKIyMgU2Vzc2lvbiBJbmZvIApgYGB7ciwgZWNobyA9IEZBTFNFfQpzZXNzaW9uSW5mbygpCmBgYAoKIyMjIFNjYWxpbmcgdmFsdWVzIGluIHRoZSBhZ2dyZWdhdGVkIGhlYXRtYXAKYGBge3J9CmdldEFueXdoZXJlKGFnZ3JlZ2F0ZV9nZW5lX2V4cHJlc3Npb24pCmBgYAoKYGBge3J9CiMjIFRoaXMgZG9lcyB0aGUgYWJvdmUgYWdncmVnYXRpb24gZnVuY3Rpb24gYnV0IG1hbnVhbGx5IHRvIHVuZGVyc3RhbmQgaXQgYmV0dGVyLgojIyBUaGlzIGlzIGhvdyB3ZSBleGVjdXRlIHRoZSBmdW5jdGlvbiBhYm92ZS4KI2FnZ19tYXRfbm9fZ3JvdXAgPC0gYWdncmVnYXRlX2dlbmVfZXhwcmVzc2lvbihtb25vY2xlLm9iamVjdCwgZ2VuZV9tb2R1bGVfZGZfc2V4LCBzY2FsZV9hZ2dfdmFsdWVzID0gVFJVRSkKCiMjIGRlZmluZSB2YXJpYWJsZXMKIyBjZHMgPSBtb25vY2xlLm9iamVjdAojIGdlbmVfZ3JvdXBfZGYgPSBnZW5lX21vZHVsZV9kZl9zZXgKIyBtYXhfYWdnX3ZhbHVlID0gMwojIG1pbl9hZ2dfdmFsdWUgPSAtMwoKIyMgcGVyZm9ybSBhZ2dyZWdhdGlvbgojIGFnZ19tYXQgPC0gbm9ybWFsaXplZF9jb3VudHMoY2RzKQojIGdlbmVfZ3JvdXBfZGYgPC0gYXMuZGF0YS5mcmFtZShnZW5lX2dyb3VwX2RmKQojIGdlbmVfZ3JvdXBfZGYgPC0gZ2VuZV9ncm91cF9kZltnZW5lX2dyb3VwX2RmWywgMV0gJWluJSBmRGF0YShjZHMpJGdlbmVfc2hvcnRfbmFtZSB8IGdlbmVfZ3JvdXBfZGZbLCAxXSAlaW4lIHJvdy5uYW1lcyhmRGF0YShjZHMpKSwgLCBkcm9wID0gRkFMU0VdCiMgc2hvcnRfbmFtZV9tYXNrIDwtIGdlbmVfZ3JvdXBfZGZbWzFdXSAlaW4lIGZEYXRhKGNkcykkZ2VuZV9zaG9ydF9uYW1lCiMgaWYgKGFueShzaG9ydF9uYW1lX21hc2spKSB7CiMgICAgICAgICAgICAgZ2VuZWlkcyA8LSBhcy5jaGFyYWN0ZXIoZ2VuZV9ncm91cF9kZltbMV1dKQojICAgICAgICAgICAgIGdlbmVpZHNbc2hvcnRfbmFtZV9tYXNrXSA8LSByb3cubmFtZXMoZkRhdGEoY2RzKSlbbWF0Y2goZ2VuZWlkc1tzaG9ydF9uYW1lX21hc2tdLCAKIyAgICAgICAgICAgICAgICAgZkRhdGEoY2RzKSRnZW5lX3Nob3J0X25hbWUpXQojICAgICAgICAgICAgIGdlbmVfZ3JvdXBfZGZbWzFdXSA8LSBnZW5laWRzCiMgfQojIAojIGFnZ19tYXQgPSBhcy5tYXRyaXgobW9ub2NsZTM6OjpteS5hZ2dyZWdhdGUuTWF0cml4KGFnZ19tYXRbZ2VuZV9ncm91cF9kZlssMV0sIF0sIGFzLmZhY3RvcihnZW5lX2dyb3VwX2RmWywgMl0pLCBmdW4gPSAic3VtIikpCgojIyBUaGlzIHNjYWxlcyBhZ2dyZWdhdGUgdmFsdWVzICAgICAgICAgCiMgICAgICAgICBpZiAoc2NhbGVfYWdnX3ZhbHVlcykgewojICAgICAgICAgICAgIGFnZ19tYXQgPC0gdChzY2FsZSh0KGFnZ19tYXQpKSkKIyAgICAgICAgICAgICBhZ2dfbWF0W2FnZ19tYXQgPCBtaW5fYWdnX3ZhbHVlXSA8LSBtaW5fYWdnX3ZhbHVlCiMgICAgICAgICAgICAgYWdnX21hdFthZ2dfbWF0ID4gbWF4X2FnZ192YWx1ZV0gPC0gbWF4X2FnZ192YWx1ZQojICAgICAgICAgfQoKYGBgCgpgYGB7cn0KIyMgZ2V0IGFuIGlkZWEgb2YgdGhlIHNwcmVhZCBvZiB6LXNjb3JlIHZhbHVlcyAKIyB0ZXN0IDwtIChhZ2dfbWF0X25vX2dyb3VwKQojIHJvd1Jhbmdlcyh0ZXN0KQojIHJvd01lYW5zKHRlc3QpCiMgdGVzdCA8LSB0KGFnZ19tYXRfbm9fZ3JvdXApCiMgbmFtZXModGVzdCkgPSBtYWtlLm5hbWVzKHRlc3QpCiMgdGVzdCA9IG1lbHQodGVzdCkKIyBnZ3Bsb3QodGVzdCwgYWVzKHggPSBWYXIyLCB5ID0gdmFsdWUsIGdyb3VwID0gVmFyMikpICsgZ2VvbV92aW9saW4oKQojIHJtKHRlc3QpCmBgYAoKSW4gY29uY2x1c2lvbiwgdGhlIHBsb3RzIHdpbGwgbG9vayBkaWZmZXJlbnQgaWYgc2NhbGluZyBpcyBkb25lIGJ5IGhlYXRtYXAgYXMgaXQgZG9lcyBub3QgZG8gdGhlIHJlbGltaXRpbmcgLSBpLmUuIGFueXRoaW5nIDwgLTMgYW5kIDMgPCBmb3IgdGhlIHotc2NvcmVzLiB0aGUgc2NhbGluZyBpcyBkb25lIG9uIHRoZSB0cmFuc2Zvcm1lZCBjb2x1bW5zIChlLmcuIHdoZW4gYXBwbHlpbmcgJ3NjYWxlJyB0byBhIG1hdHJpeCwgaXQgZG9lcyBpdCBpbiBhIGNvbHVtbi13aXNlIG1hbm5lcikgd2hpY2ggaW4gdGhpcyBjYXNlLCB0aGUgbW9kdWxlcyBhcmUgY29sdW1ucyBhbmQgc28gaXQgZG9lcyB0aGUgY29ycmVjdCBzY2FsaW5nIHJlcXVpcmVkLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGlucHV0IGlzIG5vcm1hbGlzZWQgY2VsbCBjb3VudHMgYW5kIHNvIHRoZSBjZWxscyBoYXZlIGFscmVhZHkgYmVlbiBzY2FsZWQuIAoKIyMgZW5yaWNobWVudCBhbmFseXNpcyBpbiBSIGZpcnN0IHRyeQpkaWRuJ3Qgd29yayAKYGBge3J9CiMjIHRoaXMgd2FzIGRlcml2ZWQgZnJvbSBhbiBhbnN3ZXIgaGVyZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNjQ5Njk4NDIvaG93LXRvLWNhbGN1bGF0ZS1oeXBlcmdlb21ldHJpYy10ZXN0LWZvci1lYWNoLXJvdy1pbi1kYXRhLWZyYW1lLXdpdGgtYm9uZmVycm9uaQojIyB0aGUgdGVzdCBkYXRhc2V0IAojIFRvdGFsX21STkFzID0gVG90YWxfZ2VuZXNfaW5fc2NyZWVuID0gTiAoY29uc3RhbnQpCiMgc3Vic2V0X21STkFzID0gVG90YWxfaGl0c19pbl9zY3JlZW4gPSBuIChjb25zdGFudCkKIyBUb3RhbF90YXJnZXRzX3RhcmdldHMgPSBUb3RhbF9nZW5lc19pbl9tb2R1bGUgPSBLCiMgc3Vic2V0X3RhcmdldHMgPSBIaXRzX2luX21vZHVsZSA9IGsKCiMgVG90YWxfZ2VuZXNfaW5fc2NyZWVuIDwtIG5yb3coc2NyZWVuX2hpdHNbIWlzLm5hKHNjcmVlbl9oaXRzJGBHYW0gcGhlbm90eXBlIHNjcmVlbmApLCBdKQojICMjIHRoaXMgaXMgaWYgeW91IHRha2UgdGhlIHNjcmVlbmVkIGdlbmVzIGluIHRoZSBjbHVzdGVyCiMgI1RvdGFsX2dlbmVzX2luX3NjcmVlbiA8LSBhcy5kYXRhLmZyYW1lKHBjX3NjcmVlbmVkJHNjcmVlbmVkKQojIFRvdGFsX2hpdHNfaW5fc2NyZWVuIDwtIG5yb3coc2NyZWVuX2hpdHNbd2hpY2goc2NyZWVuX2hpdHMkYEdhbSBwaGVub3R5cGUgc2NyZWVuYCA9PSAiQm90aCIgfCBzY3JlZW5faGl0cyRgR2FtIHBoZW5vdHlwZSBzY3JlZW5gID09ICJGZW1hbGVzIiB8IHNjcmVlbl9oaXRzJGBHYW0gcGhlbm90eXBlIHNjcmVlbmAgPT0gIk1hbGVzIiksIF0gKQojIEhpdHNfaW5fbW9kdWxlIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoZGZfaGl0c19nZW5lX21vZHVsZXMkbW9kdWxlKSkkRnJlcQojIFRvdGFsX2dlbmVzX2luX21vZHVsZSA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKGdlbmVfbW9kdWxlX2RmX3NleCRtb2R1bGUpKSRGcmVxCiMgTW9kdWxlX25hbWVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoZ2VuZV9tb2R1bGVfZGZfc2V4JG1vZHVsZSkpJFZhcjEKIyAKIyBkZjEgPC0gZGF0YS5mcmFtZShNb2R1bGVfbmFtZXMgPSBNb2R1bGVfbmFtZXMsIFRvdGFsX2dlbmVzX2luX21vZHVsZSA9IFRvdGFsX2dlbmVzX2luX21vZHVsZSwgSGl0c19pbl9tb2R1bGUgPSBIaXRzX2luX21vZHVsZSwgVG90YWxfaGl0c19pbl9zY3JlZW4gPSByZXAoVG90YWxfaGl0c19pbl9zY3JlZW4sIGxlbmd0aChNb2R1bGVfbmFtZXMpKSwgVG90YWxfZ2VuZXNfaW5fc2NyZWVuID0gcmVwKFRvdGFsX2dlbmVzX2luX3NjcmVlbiwgbGVuZ3RoKE1vZHVsZV9uYW1lcykpKQojIAojIGxpYnJhcnkoYnJvb20pCiMgcmVzdWx0ID0gbGFwcGx5KDE6bnJvdyhkZjEpLGZ1bmN0aW9uKGkpewojICAgICAgICBub3RfdGFyZ2V0X3N1YnNldCA9IGRmMSRUb3RhbF9nZW5lc19pbl9tb2R1bGVbaV0gLSBkZjEkSGl0c19pbl9tb2R1bGVbaV0KIyAgICAgICAgbm90X3N1YnNldCA9IGRmMSRUb3RhbF9nZW5lc19pbl9zY3JlZW5baV0gLSBkZjEkVG90YWxfaGl0c19pbl9zY3JlZW5baV0gLSBub3RfdGFyZ2V0X3N1YnNldAojICAgICAgICAKIyAgICAgICAgCiMgICAgICAgIE0gPSBjYmluZChjKGRmMSRIaXRzX2luX21vZHVsZVtpXSxkZjEkVG90YWxfaGl0c19pbl9zY3JlZW5baV0tZGYxJEhpdHNfaW5fbW9kdWxlW2ldKSwKIyAgICAgICAgICAgICAgYyhub3RfdGFyZ2V0X3N1YnNldCxub3Rfc3Vic2V0KSkKIyAgICAgICAKIyAgICAgICAgcmVzID0gZGF0YS5mcmFtZShNb2R1bGVfbmFtZXM9ZGYxJE1vZHVsZV9uYW1lc1tpXSwKIyAgICAgICAgICAgICAgICAgdGlkeShmaXNoZXIudGVzdChNLGFsdGVybmF0aXZlPSJncmVhdGVyIikpKQojIAojICAgICAgICByZXR1cm4ocmVzKQojIH0pCiMgCiMgIyMgYmluZCBldmVyeXRoaW5nIHRvZ2V0aGVyCiMgcmVzdWx0ID0gZG8uY2FsbChyYmluZCxyZXN1bHQpCiMgIyMgQWRqdXN0IHAgdmFsdWUgdXNpbmcgYm9uZmVyb25pIG11bHRpcGxlIGh5cG90aGVzaXMgY29ycmVjdGlvbgojIHJlc3VsdCRwYWRqID0gcC5hZGp1c3QocmVzdWx0JHAudmFsdWUsImJvbmZlcnJvbmkiKQojIAojIHJlc3VsdApgYGA=